Created
April 7, 2017 23:53
-
-
Save mhoye/0babc7ab327551dabab930279da1a4a4 to your computer and use it in GitHub Desktop.
A Python routine to build a fake httplib2.Response object out of a Requests object, two bottlecaps and some twine.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def fakeResponse(req): | |
""" Replacing httplib2 with Requests without rewriting the planet (har har) | |
means that we need to assemble a fake Response object out of the header set | |
returned by a Request. Shenanigans ahead. """ | |
import httplib2 | |
info = dict() | |
info['status'] = 200 | |
fake = httplib2.Response(info) | |
for keys in req.headers: | |
setattr(fake, str(keys).lower(), req.headers[keys]) | |
# We're handling the status like this because httplib2 expects an int there, | |
# but some web servers will hand you "200 OK" instead of 200, and Requests | |
# doesn't always do the right thing. | |
fake.status = int(str(req.status_code).split(' ')[0]) | |
# fromcache and versions have no equivalent in Requests that I can see, so | |
# we're just going to lie about it. Per the docs, "11" means "HTTP/1.1", | |
# so, this might conceivably break something in a future HTTP2-friendly world. | |
fake.fromcache = False | |
fake.version = '11' | |
fake.reason = req.reason | |
try: | |
fake.previous = (req.history[-2]).url | |
except: | |
fake.previous = req.url | |
setattr(fake, 'content-location', req.url) | |
# This is particular to Planet's in-house caching sytem. | |
fake['-content-hash'] = '' | |
return fake |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment