...
|
...
|
@@ -14,8 +14,8 @@ class MultiPartUpload(object):
|
14
|
14
|
MAX_CHUNKS = 100
|
15
|
15
|
MAX_FILE_SIZE = 42949672960 # 5TB
|
16
|
16
|
|
17
|
|
- def __init__(self, bucket, file, uri):
|
18
|
|
- self.bucket = bucket
|
|
17
|
+ def __init__(self, s3, file, uri):
|
|
18
|
+ self.s3 = s3
|
19
|
19
|
self.file = file
|
20
|
20
|
self.uri = uri
|
21
|
21
|
self.upload_id = None
|
...
|
...
|
@@ -25,12 +25,12 @@ class MultiPartUpload(object):
|
25
|
25
|
Begin a multipart upload
|
26
|
26
|
http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?mpUploadInitiate.html
|
27
|
27
|
"""
|
28
|
|
- request = self.bucket.create_request("OBJECT_POST", uri = self.uri, extra = "?uploads")
|
29
|
|
- response = self.bucket.send_request(request)
|
|
28
|
+ request = self.s3.create_request("OBJECT_POST", uri = self.uri, extra = "?uploads")
|
|
29
|
+ response = self.s3.send_request(request)
|
30
|
30
|
data = response["data"]
|
31
|
|
- bucket, key, upload_id = getTextFromXml(data, "Bucket"), getTextFromXml(data, "Key"), getTextFromXml(data, "UploadId")
|
|
31
|
+ s3, key, upload_id = getTextFromXml(data, "Bucket"), getTextFromXml(data, "Key"), getTextFromXml(data, "UploadId")
|
32
|
32
|
self.upload_id = upload_id
|
33
|
|
- return bucket, key, upload_id
|
|
33
|
+ return s3, key, upload_id
|
34
|
34
|
|
35
|
35
|
def upload_all_parts(self, num_processes = 1, chunk_size = MIN_CHUNK_SIZE):
|
36
|
36
|
"""
|
...
|
...
|
@@ -67,8 +67,8 @@ class MultiPartUpload(object):
|
67
|
67
|
debug("Uploading part %i of %r (%s bytes)" % (id, self.upload_id, content_length))
|
68
|
68
|
headers = { "Content-Length": content_length }
|
69
|
69
|
query_string = "?partNumber=%i&uploadId=%s" % (id, self.upload_id)
|
70
|
|
- request = self.bucket.create_request("OBJECT_PUT", uri = self.uri, headers = headers, extra = query_string)
|
71
|
|
- response = self.bucket.send_request(request, body = data)
|
|
70
|
+ request = self.s3.create_request("OBJECT_PUT", uri = self.uri, headers = headers, extra = query_string)
|
|
71
|
+ response = self.s3.send_request(request, body = data)
|
72
|
72
|
|
73
|
73
|
return response["headers"]["etag"]
|
74
|
74
|
|
...
|
...
|
@@ -84,5 +84,5 @@ class MultiPartUpload(object):
|
84
|
84
|
body = "<CompleteMultipartUpload>%s</CompleteMultipartUpload>" % ("".join(parts_xml))
|
85
|
85
|
|
86
|
86
|
headers = { "Content-Length": len(body) }
|
87
|
|
- request = self.bucket.create_request("OBJECT_POST", uri = self.uri, headers = headers, extra = "?uploadId=%s" % (self.upload_id))
|
88
|
|
- response = self.bucket.send_request(request, body = body)
|
|
87
|
+ request = self.s3.create_request("OBJECT_POST", uri = self.uri, headers = headers, extra = "?uploadId=%s" % (self.upload_id))
|
|
88
|
+ response = self.s3.send_request(request, body = body)
|