Mercurial > public > sg101
comparison oembed/core.py @ 908:2181da65c98b
Code cleanup.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Mon, 16 Mar 2015 20:58:40 -0500 |
parents | 344f7914d421 |
children |
comparison
equal
deleted
inserted
replaced
907:344f7914d421 | 908:2181da65c98b |
---|---|
1 """ | 1 """ |
2 This module contains core functionality for the oembed application. | 2 This module contains core functionality for the oembed application. |
3 | 3 |
4 """ | 4 """ |
5 from contextlib import closing | |
5 import json | 6 import json |
6 import urllib | 7 import urllib |
7 import urllib2 | 8 import urllib2 |
8 import gzip | 9 import gzip |
9 try: | 10 try: |
14 | 15 |
15 | 16 |
16 USER_AGENT = 'gremmies python oembed' | 17 USER_AGENT = 'gremmies python oembed' |
17 | 18 |
18 | 19 |
19 def get_oembed(api_endpoint, url, format='json', **opts): | 20 def get_oembed(api_endpoint, url, fmt='json', **opts): |
20 """ | 21 """ |
21 Perform the GET request to retrieve the embedded media data from the given | 22 Perform the GET request to retrieve the embedded media data from the given |
22 API endpoint for the given URL. Return the result as a Python dictionary. | 23 API endpoint for the given URL. Return the result as a Python dictionary. |
23 | 24 |
24 format specifies the response format, and should be 'json' or 'xml'. | 25 fmt specifies the response format, and should be 'json' or 'xml'. |
25 opts are any additional GET options that should be present in the GET | 26 opts are any additional GET options that should be present in the GET |
26 request. | 27 request. |
27 | 28 |
28 """ | 29 """ |
29 opts['url'] = url | 30 opts['url'] = url |
30 opts['format'] = format | 31 opts['format'] = fmt |
31 api_url = "%s?%s" % (api_endpoint, urllib.urlencode(opts)) | 32 api_url = "%s?%s" % (api_endpoint, urllib.urlencode(opts)) |
32 | 33 |
33 headers = { | 34 headers = { |
34 'User-Agent': USER_AGENT, | 35 'User-Agent': USER_AGENT, |
35 'Accept-Encoding': 'gzip', | 36 'Accept-Encoding': 'gzip', |
36 } | 37 } |
37 request = urllib2.Request(api_url, headers=headers) | 38 request = urllib2.Request(api_url, headers=headers) |
38 | 39 with closing(urllib2.urlopen(request)) as response: |
39 opener = urllib2.build_opener() | 40 headers = response.info() |
40 f = opener.open(request) | 41 result = response.read() |
41 headers = f.info() | |
42 result = f.read() | |
43 f.close() | |
44 | 42 |
45 if headers.get('content-encoding') == 'gzip': | 43 if headers.get('content-encoding') == 'gzip': |
46 f = gzip.GzipFile(fileobj=StringIO(result)) | 44 with closing(gzip.GzipFile(fileobj=StringIO(result))) as f: |
47 result = f.read() | 45 result = f.read() |
48 f.close() | |
49 | 46 |
50 return json.loads(result) | 47 return json.loads(result) |
51 | 48 |
52 if __name__ == "__main__": | 49 if __name__ == "__main__": |
53 try: | 50 try: |