Merge "Expose Fake objects in compat"

This commit is contained in:
Jenkins 2015-11-23 00:53:15 +00:00 committed by Gerrit Code Review
commit e6e4dab61d
1 changed files with 30 additions and 20 deletions

View File

@ -20,31 +20,41 @@ def _versiontuple(v):
_requests_version = _versiontuple(requests.__version__)
if _requests_version < (2, 3):
class _FakeHTTPMessage(object):
def __init__(self, headers):
self.headers = headers
def getheaders(self, name):
try:
return [self.headers[name]]
except KeyError:
return []
def get_all(self, name, failobj=None):
# python 3 only, overrides email.message.Message.get_all
try:
return [self.headers[name]]
except KeyError:
return failobj
class _FakeHTTPResponse(object):
def __init__(self, headers):
self.msg = _FakeHTTPMessage(headers)
def isclosed(self):
# Don't let urllib try to close me
return False
if _requests_version < (2, 3):
# NOTE(jamielennox): There is a problem with requests < 2.3.0 such that it
# needs a httplib message for use with cookie extraction. It has been fixed
# but it is needed until we can rely on a recent enough requests version.
class _FakeHTTPMessage(object):
def getheaders(self, name):
return None
def get_all(self, name, failobj=None):
# python 3 only, overrides email.message.Message.get_all
return failobj
class _FakeHTTPResponse(object):
def __init__(self):
self.msg = _FakeHTTPMessage()
def isclosed(self):
# Don't let urllib try to close me
return False
_fake_http_response = _FakeHTTPResponse()
_fake_http_response = _FakeHTTPResponse({})
else:
_fake_http_response = None