mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 09:13:23 +00:00
Fix multiple header behaviour.
Join multiple header values together, rather than losing duplicates with a dict.
This commit is contained in:
@@ -57,7 +57,7 @@ def parse_headers(header_list):
|
||||
|
||||
def serialize_headers(response):
|
||||
out = {}
|
||||
for key, values in compat.get_headers(response):
|
||||
for key, values in compat.get_headers(response.msg):
|
||||
out.setdefault(key, [])
|
||||
out[key].extend(values)
|
||||
return out
|
||||
@@ -108,11 +108,15 @@ class VCRHTTPResponse(HTTPResponse):
|
||||
|
||||
def getheaders(self):
|
||||
message = parse_headers(self.recorded_response['headers'])
|
||||
return compat.get_header_items(message)
|
||||
return list(compat.get_header_items(message))
|
||||
|
||||
def getheader(self, header, default=None):
|
||||
headers = dict(((k.lower(), v) for k, v in self.getheaders()))
|
||||
return headers.get(header.lower(), default)
|
||||
values = [v for (k, v) in self.getheaders() if k.lower() == header.lower()]
|
||||
|
||||
if values:
|
||||
return ', '.join(values)
|
||||
else:
|
||||
return default
|
||||
|
||||
|
||||
class VCRConnection:
|
||||
|
||||
@@ -21,18 +21,17 @@ def get_header(message, name):
|
||||
|
||||
|
||||
def get_header_items(message):
|
||||
if six.PY3:
|
||||
return dict(message._headers).items()
|
||||
else:
|
||||
return message.dict.items()
|
||||
for (key, values) in get_headers(message):
|
||||
for value in values:
|
||||
yield key, value
|
||||
|
||||
|
||||
def get_headers(response):
|
||||
for key in set(response.msg.keys()):
|
||||
def get_headers(message):
|
||||
for key in set(message.keys()):
|
||||
if six.PY3:
|
||||
yield key, response.msg.get_all(key)
|
||||
yield key, message.get_all(key)
|
||||
else:
|
||||
yield key, response.msg.getheaders(key)
|
||||
yield key, message.getheaders(key)
|
||||
|
||||
|
||||
def get_httpmessage(headers):
|
||||
|
||||
Reference in New Issue
Block a user