Browse code

Fixed headers passing in Multipart upload

Michal Ludvig authored on 2012/01/05 22:30:03
Showing 2 changed files
... ...
@@ -14,11 +14,12 @@ class MultiPartUpload(object):
14 14
     MAX_CHUNK_SIZE_MB = 5120    # 5GB
15 15
     MAX_FILE_SIZE = 42949672960 # 5TB
16 16
 
17
-    def __init__(self, s3, file, uri):
17
+    def __init__(self, s3, file, uri, headers_baseline = {}):
18 18
         self.s3 = s3
19 19
         self.file = file
20 20
         self.uri = uri
21 21
         self.parts = {}
22
+        self.headers_baseline = headers_baseline
22 23
         self.upload_id = self.initiate_multipart_upload()
23 24
 
24 25
     def initiate_multipart_upload(self):
... ...
@@ -26,7 +27,7 @@ class MultiPartUpload(object):
26 26
         Begin a multipart upload
27 27
         http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?mpUploadInitiate.html
28 28
         """
29
-        request = self.s3.create_request("OBJECT_POST", uri = self.uri, extra = "?uploads")
29
+        request = self.s3.create_request("OBJECT_POST", uri = self.uri, headers = self.headers_baseline, extra = "?uploads")
30 30
         response = self.s3.send_request(request)
31 31
         data = response["data"]
32 32
         self.upload_id = getTextFromXml(data, "UploadId")
... ...
@@ -747,10 +747,8 @@ class S3(object):
747 747
         return response
748 748
 
749 749
     def send_file_multipart(self, file, headers, uri, size):
750
-        upload = MultiPartUpload(self, file, uri)
751
-
752 750
         chunk_size = self.config.multipart_chunk_size_mb * 1024 * 1024
753
-
751
+        upload = MultiPartUpload(self, file, uri, headers)
754 752
         upload.upload_all_parts()
755 753
         response = upload.complete_multipart_upload()
756 754
         response["speed"] = 0 # XXX