changeset 910:90acb29478e9

Merge.
author Brian Neal <bgneal@gmail.com>
date Mon, 16 Mar 2015 21:05:22 -0500
parents 90632d090bbc (diff) d75da42ba11d (current diff)
children d3f6e9cb1f39
files
diffstat 2 files changed, 21 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/oembed/core.py	Sun Mar 08 16:25:09 2015 -0500
+++ b/oembed/core.py	Mon Mar 16 21:05:22 2015 -0500
@@ -2,6 +2,7 @@
 This module contains core functionality for the oembed application.
 
 """
+from contextlib import closing
 import json
 import urllib
 import urllib2
@@ -16,18 +17,18 @@
 USER_AGENT = 'gremmies python oembed'
 
 
-def get_oembed(api_endpoint, url, format='json', **opts):
+def get_oembed(api_endpoint, url, fmt='json', **opts):
     """
     Perform the GET request to retrieve the embedded media data from the given
     API endpoint for the given URL. Return the result as a Python dictionary.
 
-    format specifies the response format, and should be 'json' or 'xml'.
+    fmt specifies the response format, and should be 'json' or 'xml'.
     opts are any additional GET options that should be present in the GET
     request.
 
     """
     opts['url'] = url
-    opts['format'] = format
+    opts['format'] = fmt
     api_url = "%s?%s" % (api_endpoint, urllib.urlencode(opts))
 
     headers = {
@@ -35,23 +36,20 @@
         'Accept-Encoding': 'gzip',
     }
     request = urllib2.Request(api_url, headers=headers)
-
-    opener = urllib2.build_opener()
-    f = opener.open(request)
-    headers = f.info()
-    result = f.read()
-    f.close()
+    with closing(urllib2.urlopen(request)) as response:
+        headers = response.info()
+        result = response.read()
 
     if headers.get('content-encoding') == 'gzip':
-        f = gzip.GzipFile(fileobj=StringIO(result))
-        result = f.read()
-        f.close()
+        with closing(gzip.GzipFile(fileobj=StringIO(result))) as f:
+            result = f.read()
 
     return json.loads(result)
 
 if __name__ == "__main__":
     try:
         print get_oembed("http://www.youtube.com/oembed",
-                "http://www.youtube.com/watch?v=7_IMzJldOf4")
+                         "http://www.youtube.com/watch?v=7_IMzJldOf4",
+                         scheme='https')
     except urllib2.HTTPError, e:
         print e
--- a/oembed/views.py	Sun Mar 08 16:25:09 2015 -0500
+++ b/oembed/views.py	Mon Mar 16 21:05:22 2015 -0500
@@ -43,23 +43,24 @@
         if re.match(provider.url_regex, url):
             try:
                 data = get_oembed(provider.api_endpoint,
-                        url,
-                        maxwidth=settings.OEMBED_MAXWIDTH,
-                        maxheight=settings.OEMBED_MAXHEIGHT)
+                                  url,
+                                  maxwidth=settings.OEMBED_MAXWIDTH,
+                                  maxheight=settings.OEMBED_MAXHEIGHT,
+                                  scheme='https')
             except IOError, e:
                 return HttpResponseBadRequest(
                     "Sorry, we could not retrieve your video (%s)" % e)
 
-            if 'type' not in data or data['type'] != 'video':
+            if data.get('type') != 'video':
                 return HttpResponseBadRequest(
                     "Hey, this doesn't look like a video..??")
 
             oembed = Oembed(url=url,
-                    type=Oembed.VIDEO,
-                    title=data.get('title', ''),
-                    width=int(data.get('width', 0)),
-                    height=int(data.get('height', 0)),
-                    html=data.get('html', ''))
+                            type=Oembed.VIDEO,
+                            title=data.get('title', ''),
+                            width=int(data.get('width', 0)),
+                            height=int(data.get('height', 0)),
+                            html=data.get('html', ''))
             oembed.save()
 
             data = dict(id=oembed.id, embed=oembed.html)