summaryrefslogtreecommitdiff
path: root/swiftclient/client.py
diff options
context:
space:
mode:
Diffstat (limited to 'swiftclient/client.py')
-rw-r--r--swiftclient/client.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/swiftclient/client.py b/swiftclient/client.py
index 5494f34..a7d0daf 100644
--- a/swiftclient/client.py
+++ b/swiftclient/client.py
@@ -186,10 +186,12 @@ class HTTPConnection:
for header, value in items:
value = encode_utf8(value)
header = header.lower()
- for target_type in 'container', 'account', 'object':
- prefix = 'x-%s-meta-' % target_type
- if header.startswith(prefix):
- header = encode_utf8(header)
+ if isinstance(header, six.string_types):
+ for target_type in 'container', 'account', 'object':
+ prefix = 'x-%s-meta-' % target_type
+ if header.startswith(prefix):
+ header = encode_utf8(header)
+ break
ret[header] = value
return ret
@@ -899,9 +901,8 @@ def put_object(url, token=None, container=None, name=None, contents=None,
:param chunk_size: chunk size of data to write; it defaults to 65536;
used only if the contents object has a 'read'
method, e.g. file-like objects, ignored otherwise
- :param content_type: value to send as content-type header; if None, no
- content-type will be set (remote end will likely try
- to auto-detect it)
+ :param content_type: value to send as content-type header; if None, an
+ empty string value will be sent
:param headers: additional headers to include in the request, if any
:param http_conn: HTTP connection object (If None, it will create the
conn object)
@@ -940,6 +941,8 @@ def put_object(url, token=None, container=None, name=None, contents=None,
content_length = int(v)
if content_type is not None:
headers['Content-Type'] = content_type
+ else: # python-requests sets application/x-www-form-urlencoded otherwise
+ headers['Content-Type'] = ''
if not contents:
headers['Content-Length'] = '0'
if hasattr(contents, 'read'):