1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-08 16:53:23 +00:00

Make Request headers to be a dict of lists

This commit is contained in:
Max Shytikov
2014-04-30 01:18:12 +02:00
parent e4d1db0617
commit eab10578d5
3 changed files with 25 additions and 4 deletions

View File

@@ -4,3 +4,18 @@ from vcr.request import Request
def test_str():
req = Request('GET', 'http://www.google.com:80/', '', {})
str(req) == '<Request (GET) http://www.google.com:80/>'
def test_headers():
headers = {'X-Header1': ['h1'], 'X-Header2': 'h2'}
req = Request('GET', 'http://go.com:80/', '', headers)
assert req.headers == {'X-Header1': ['h1'], 'X-Header2': ['h2']}
req.add_header('X-Header1', 'h11')
assert req.headers == {'X-Header1': ['h1', 'h11'], 'X-Header2': ['h2']}
def test_flat_headers_dict():
headers = {'X-Header1': ['h1', 'h11'], 'X-Header2': ['h2']}
req = Request('GET', 'http://go.com:80/', '', headers)
assert req.flat_headers_dict() == {'X-Header1': 'h1', 'X-Header2': 'h2'}

View File

@@ -7,10 +7,16 @@ class Request(object):
self.method = method
self.uri = uri
self.body = body
self.headers = headers
self.headers = {}
for key in headers:
self.add_header(key, headers[key])
def add_header(self, key, value):
self.headers[key] = value
value = list(value) if isinstance(value, (tuple, list)) else [value]
self.headers.setdefault(key, []).extend(value)
def flat_headers_dict(self):
return {key: self.headers[key][0] for key in self.headers}
@property
def scheme(self):
@@ -54,7 +60,7 @@ class Request(object):
'method': self.method,
'uri': self.uri,
'body': self.body,
'headers': dict(self.headers),
'headers': self.headers,
}
@classmethod

View File

@@ -225,7 +225,7 @@ class VCRConnection:
method=self._vcr_request.method,
url=self._url(self._vcr_request.uri),
body=self._vcr_request.body,
headers=dict(self._vcr_request.headers or {})
headers=self._vcr_request.flat_headers_dict(),
)
# get the response