From 93ba12c7d7483af5374ba5f0e62a46ddc5e1ffe2 Mon Sep 17 00:00:00 2001 From: i026e Date: Wed, 17 Dec 2014 11:25:07 +0300 Subject: Update __init__.py There is a problem with headers when a binary string is passed (like b'Authorization') I've added a function to decode such strings. It is not an elegant solution, but it works for me --- python3/httplib2/__init__.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/python3/httplib2/__init__.py b/python3/httplib2/__init__.py index 43f7419..b7b00b1 100644 --- a/python3/httplib2/__init__.py +++ b/python3/httplib2/__init__.py @@ -192,8 +192,13 @@ def safename(filename): NORMALIZE_SPACE = re.compile(r'(?:\r\n)?[ \t]+') def _normalize_headers(headers): - return dict([ (key.lower(), NORMALIZE_SPACE.sub(value, ' ').strip()) for (key, value) in headers.items()]) + return dict([ (_convert_byte_str(key).lower(), NORMALIZE_SPACE.sub(_convert_byte_str(value), ' ').strip()) for (key, value) in headers.items()]) +def _convert_byte_str(s): + if not isinstance(s, str): + return str(s, 'utf-8') + return s + def _parse_cache_control(headers): retval = {} if 'cache-control' in headers: -- cgit v1.2.1 From 1cf37bd8f5ddc8ac629b07031f7c5341840b5b7e Mon Sep 17 00:00:00 2001 From: Cristobal Date: Mon, 2 Mar 2015 21:00:03 -0300 Subject: Added unit test for _convert_byte_str in python3/httplib2test.py. --- python3/httplib2test.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/python3/httplib2test.py b/python3/httplib2test.py index 5f786bd..246956a 100755 --- a/python3/httplib2test.py +++ b/python3/httplib2test.py @@ -1235,6 +1235,12 @@ class HttpPrivateTest(unittest.TestCase): self.assertTrue('cache-control' in h) self.assertTrue('other' in h) self.assertEqual('Stuff', h['other']) + + def testConvertByteStr(self): + with self.assertRaises(TypeError): + httplib2._convert_byte_str(4) + self.assertEqual('Hello World', httplib2._convert_byte_str(b'Hello World')) + self.assertEqual('Bye World', httplib2._convert_byte_str('Bye World')) def testExpirationModelTransparent(self): # Test that no-cache makes our request TRANSPARENT -- cgit v1.2.1