def send_request(parameters, request_body=None): print '****************' print '* REQUEST *' print '****************' print '%s https://%s%s' % (parameters.method, DEFAULT_HOST, parameters.createPath()) if request_body: print request_body print '****************' print '* RESPONSE *' print '****************' parameters.setAuthHeader(loadcredentials()) with closing(httplib.HTTPSConnection(DEFAULT_HOST)) as conn: conn.putrequest(parameters.method, parameters.createPath()) for name, value in parameters.headers.iteritems(): conn.putheader(name, value) conn.endheaders() if request_body: conn.send(request_body) response = conn.getresponse() print response.status, response.getheaders() response_dom = xml.dom.minidom.parseString(response.read()) print response_dom.toprettyxml()
def send_request(parameters, request_body=None): print "****************" print "* REQUEST *" print "****************" print "%s https://%s%s" % (parameters.method, DEFAULT_HOST, parameters.createPath()) if request_body: print request_body print "****************" print "* RESPONSE *" print "****************" parameters.setAuthHeader(loadcredentials()) with closing(httplib.HTTPSConnection(DEFAULT_HOST)) as conn: conn.putrequest(parameters.method, parameters.createPath()) for name, value in parameters.headers.iteritems(): conn.putheader(name, value) conn.endheaders() if request_body: conn.send(request_body) response = conn.getresponse() print response.status, response.getheaders() response_dom = xml.dom.minidom.parseString(response.read()) print response_dom.toprettyxml()
def testShouldCreateAndDeleteBucket(self): client = S3Client(loadcredentials()) bucket_name = "test-" + str(uuid.uuid4()) client.createBucket(bucket_name) self.failUnless(client.bucketExists(bucket_name)) bucket_list = client.listBuckets() self.failUnless(len(bucket_list) > 0) self.failUnless(bucket_name in bucket_list) client.deleteBucket(bucket_name) self.failIf(client.bucketExists(bucket_name))
def testShouldCreateAndDeleteObjectInBucket(self): client = S3Client(loadcredentials()) bucket_name = "test-" + str(uuid.uuid4()) client.createBucket(bucket_name) object_key = 's3client.py' file_path = os.path.join(os.getcwd(), object_key) client.createObject(bucket_name, object_key, file_path) self.failUnless(client.objectExists(bucket_name, object_key)) client.deleteObject(bucket_name, object_key) self.failIf(client.objectExists(bucket_name, object_key)) client.deleteBucket(bucket_name)
def testCannotDeleteBucketWithObject(self): client = S3Client(loadcredentials()) bucket_name = "test-" + str(uuid.uuid4()) client.createBucket(bucket_name) object_key = 's3client.py' file_path = os.path.join(os.getcwd(), object_key) client.createObject(bucket_name, object_key, file_path) try: client.deleteBucket(bucket_name) self.fail('Should have failed to delete a bucket with an object') except BadHttpResponse: pass client.deleteObject(bucket_name, object_key) client.deleteBucket(bucket_name)
def testCanDownloadUploadedFile(self): client = S3Client(loadcredentials()) bucket_name = "test-" + str(uuid.uuid4()) client.createBucket(bucket_name) object_key = 's3client.py' file_path = os.path.join(os.getcwd(), object_key) client.createObject(bucket_name, object_key, file_path) temp_file_path = os.path.join(tempfile.gettempdir(), str(uuid.uuid4())) client.downloadObject(bucket_name, object_key, temp_file_path) self.assertEqual(client.computeMD5(file_path), client.computeMD5(temp_file_path)) os.remove(temp_file_path) client.deleteObject(bucket_name, object_key) client.deleteBucket(bucket_name)
def testCanDownloadFileUsingPublicURL(self): client = S3Client(loadcredentials(), True) bucket_name = "test-" + str(uuid.uuid4()) client.createBucket(bucket_name) object_key = 's3client.py' file_path = os.path.join(os.getcwd(), object_key) client.createObject(bucket_name, object_key, file_path) temp_file_path = os.path.join(tempfile.gettempdir(), str(uuid.uuid4())) expires = datetime.datetime.now() + datetime.timedelta(days=1) urllib.urlretrieve(client.publicURL(bucket_name, object_key, expires), temp_file_path) self.assertEqual(client.computeMD5(file_path), client.computeMD5(temp_file_path)) os.remove(temp_file_path) client.deleteObject(bucket_name, object_key) client.deleteBucket(bucket_name)
def testShouldReturnOctetStreamForUnknownFileType(self): client = S3Client(loadcredentials()) self.assertEqual('application/octet-stream', client.getMimeType('/foo/file.foo'))
def connect(): credentials = loadcredentials() access_key = credentials.access_key_id secret_key = credentials.secret_access_key return connect_to_region(EC2_REGION, aws_access_key_id=access_key, aws_secret_access_key=secret_key)
buf = input(CHUNK_SIZE) while len(buf) > 0: output(buf) buf = input(CHUNK_SIZE) class BadHttpResponse(Exception): """Raised when an unexpected status code is returned""" pass class S3Object: def __init__(self, name, size, last_modified): self.last_modified = last_modified self.size = size self.name = name def describe(self): return self.name, self.size, self.last_modified def __str__(self): return '%s -- %s bytes -- %s' % self.describe() if __name__ == '__main__': client = S3Client(loadcredentials()) for bucket_name in client.listBuckets(): print "\nBucket:", bucket_name for object in client.listObjects(bucket_name): print "Object:", object
def testShouldFindPublicBuckets(self): client = S3Client(loadcredentials()) self.failUnless(client.bucketExists('public')) self.failUnless(client.bucketExists('Public'))
def testShouldReturnPdfMimieTypeForPdfFile(self): client = S3Client(loadcredentials()) self.assertEqual('application/pdf', client.getMimeType('/foo/file.pdf'))
return base64.b64encode(digest) def copy(self, input, output): buf = input(CHUNK_SIZE) while len(buf) > 0: output(buf) buf = input(CHUNK_SIZE) class BadHttpResponse(Exception): """Raised when an unexpected status code is returned""" pass class S3Object: def __init__(self, name, size, last_modified): self.last_modified = last_modified self.size = size self.name = name def describe(self): return self.name, self.size, self.last_modified def __str__(self): return '%s -- %s bytes -- %s' % self.describe() if __name__ == '__main__': client = S3Client(loadcredentials()) for bucket_name in client.listBuckets(): print "\nBucket:", bucket_name for object in client.listObjects(bucket_name): print "Object:", object