Fix str/unicode issue in batch media requests.
Reviewed in http://codereview.appspot.com/5569055/.
diff --git a/apiclient/http.py b/apiclient/http.py
index 4563bd1..c8a8cd4 100644
--- a/apiclient/http.py
+++ b/apiclient/http.py
@@ -513,7 +513,7 @@
if request.body is None:
body = body[:-2]
- return status_line + body
+ return status_line.encode('utf-8') + body
def _deserialize_response(self, payload):
"""Convert string into httplib2 response and content.
@@ -650,7 +650,7 @@
boundary, _ = content.split(None, 1)
# Prepend with a content-type header so FeedParser can handle it.
- header = 'Content-Type: %s\r\n\r\n' % resp['content-type']
+ header = 'content-type: %s\r\n\r\n' % resp['content-type']
for_parser = header + content
parser = FeedParser()
diff --git a/tests/test_http.py b/tests/test_http.py
index cbbac61..4154310 100644
--- a/tests/test_http.py
+++ b/tests/test_http.py
@@ -198,6 +198,24 @@
s = batch._serialize_request(request).splitlines()
self.assertEquals(s, EXPECTED.splitlines())
+ def test_serialize_request_media_body(self):
+ batch = BatchHttpRequest()
+ f = open(datafile('small.png'))
+ body = f.read()
+ f.close()
+
+ request = HttpRequest(
+ None,
+ None,
+ 'https://www.googleapis.com/someapi/v1/collection/?foo=bar',
+ method='POST',
+ body=body,
+ headers={'content-type': 'application/json'},
+ methodId=None,
+ resumable=None)
+ s = batch._serialize_request(request).splitlines()
+
+
def test_serialize_request_no_body(self):
batch = BatchHttpRequest()
request = HttpRequest(