From e272ec13c36fa83f4e14d8bfc7a3b63ab7cd08b2 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 28 Aug 2011 03:07:45 -0400 Subject: [PATCH] tuples too --- requests/utils.py | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/requests/utils.py b/requests/utils.py index 8938757..1062569 100644 --- a/requests/utils.py +++ b/requests/utils.py @@ -15,32 +15,49 @@ import re import zlib -def header_expand(header_dict): +def header_expand(headers): """Returns an HTTP Header value string from a dictionary. Example expansion:: - # Accept: text/x-dvi; q=.8; mxb=100000; mxt=5.0, text/x-c {'text/x-dvi': {'q': '.8', 'mxb': '100000', 'mxt': '5.0'}, 'text/x-c': {}} + # Accept: text/x-dvi; q=.8; mxb=100000; mxt=5.0, text/x-c + + (('text/x-dvi', {'q': '.8', 'mxb': '100000', 'mxt': '5.0'}), ('text/x-c', {})) + # Accept: text/x-dvi; q=.8; mxb=100000; mxt=5.0, text/x-c """ collector = [] - for i, (value, params) in enumerate(header_dict.items()): + if isinstance(headers, dict): + + # Assume header-tuple + headers = headers.items() + + # print headers + + for i, (value, params) in enumerate(headers): + _params = [] - for p_k, p_v in params.items(): + for (p_k, p_v) in params.items(): + + _params.append('%s=%s' % (p_k, p_v)) - _params.append('{k}={v}'.format(k=p_k, v=p_v)) + collector.append(value) + collector.append('; ') if len(params): - collector.append(value) - collector.append('; ') + collector.append('; '.join(_params)) - if not len(header_dict) == i+1: + if not len(headers) == i+1: collector.append(', ') + + if collector[-1] in (', ', '; '): + del collector[-1] + return ''.join(collector) -- 2.34.1