Merge "Convert numeric and boolean header values to strings"
This commit is contained in:
commit
98085c961f
@ -211,6 +211,13 @@ def quote(value, safe='/'):
|
||||
|
||||
|
||||
def encode_utf8(value):
|
||||
if type(value) in six.integer_types + (float, bool):
|
||||
# As of requests 2.11.0, headers must be byte- or unicode-strings.
|
||||
# Convert some known-good types as a convenience for developers.
|
||||
# Note that we *don't* convert subclasses, as they may have overriddden
|
||||
# __str__ or __repr__.
|
||||
# See https://github.com/kennethreitz/requests/pull/3366 for more info
|
||||
value = str(value)
|
||||
if isinstance(value, six.text_type):
|
||||
value = value.encode('utf8')
|
||||
return value
|
||||
|
@ -400,10 +400,19 @@ class TestFunctional(unittest.TestCase):
|
||||
def test_post_object(self):
|
||||
self.conn.post_object(self.containername,
|
||||
self.objectname,
|
||||
{'x-object-meta-color': 'Something'})
|
||||
{'x-object-meta-color': 'Something',
|
||||
'x-object-meta-uni': b'\xd8\xaa'.decode('utf8'),
|
||||
'x-object-meta-int': 123,
|
||||
'x-object-meta-float': 45.67,
|
||||
'x-object-meta-bool': False})
|
||||
|
||||
headers = self.conn.head_object(self.containername, self.objectname)
|
||||
self.assertEqual('Something', headers.get('x-object-meta-color'))
|
||||
self.assertEqual(b'\xd8\xaa'.decode('utf-8'),
|
||||
headers.get('x-object-meta-uni'))
|
||||
self.assertEqual('123', headers.get('x-object-meta-int'))
|
||||
self.assertEqual('45.67', headers.get('x-object-meta-float'))
|
||||
self.assertEqual('False', headers.get('x-object-meta-bool'))
|
||||
|
||||
def test_copy_object(self):
|
||||
self.conn.put_object(
|
||||
|
@ -185,9 +185,9 @@ class TestHttpHelpers(MockHttpTest):
|
||||
|
||||
def test_encode_meta_headers(self):
|
||||
headers = {'abc': '123',
|
||||
u'x-container-meta-\u0394': '123',
|
||||
u'x-account-meta-\u0394': '123',
|
||||
u'x-object-meta-\u0394': '123'}
|
||||
u'x-container-meta-\u0394': 123,
|
||||
u'x-account-meta-\u0394': 12.3,
|
||||
u'x-object-meta-\u0394': True}
|
||||
|
||||
r = swiftclient.encode_meta_headers(headers)
|
||||
|
||||
@ -199,6 +199,7 @@ class TestHttpHelpers(MockHttpTest):
|
||||
for k, v in r.items():
|
||||
self.assertIs(type(k), binary_type)
|
||||
self.assertIs(type(v), binary_type)
|
||||
self.assertIn(v, (b'123', b'12.3', b'True'))
|
||||
|
||||
def test_set_user_agent_default(self):
|
||||
_junk, conn = c.http_connection('http://www.example.com')
|
||||
|
Loading…
x
Reference in New Issue
Block a user