tuples too
authorKenneth Reitz <me@kennethreitz.com>
Sun, 28 Aug 2011 07:07:45 +0000 (03:07 -0400)
committerKenneth Reitz <me@kennethreitz.com>
Sun, 28 Aug 2011 07:07:45 +0000 (03:07 -0400)
requests/utils.py

index 89387576fea996b37914a2cede6eb850e3b1edc8..10625693ebb528d0a767f8c277018f5e27ce9bba 100644 (file)
@@ -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)