# HG changeset patch # User Brian Neal # Date 1426557922 18000 # Node ID 90acb29478e9121f0bc7c81ae3ece938b1b10331 # Parent 90632d090bbc783aa1a8c2d3028a1d3c7391564f# Parent d75da42ba11dc76cee98307aa754ddf095f161ca Merge. diff -r d75da42ba11d -r 90acb29478e9 oembed/core.py --- 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 diff -r d75da42ba11d -r 90acb29478e9 oembed/views.py --- 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)