diff oembed/core.py @ 909:90632d090bbc

Merge with upstream.
author Brian Neal <bgneal@gmail.com>
date Mon, 16 Mar 2015 21:03:37 -0500
parents 2181da65c98b
children
line wrap: on
line diff
--- a/oembed/core.py	Sat Mar 07 14:56:41 2015 -0600
+++ b/oembed/core.py	Mon Mar 16 21:03:37 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