Ability to Specify Storage Class and Server Side Encryption in Transfer Client by toneill818 · Pull Request #256 · aws/aws-sdk-cpp
Expand Up
@@ -58,7 +58,9 @@ UploadFileRequest::UploadFileRequest(const Aws::String& fileName,
Aws::Map<Aws::String, Aws::String>&& metadata,
const std::shared_ptr<Aws::S3::S3Client>& s3Client,
bool createBucket,
bool doConsistencyChecks) :
bool doConsistencyChecks,
Aws::S3::Model::ServerSideEncryption serverSideEncryption,
Aws::S3::Model::StorageClass storageClass) :
S3FileRequest(fileName, bucketName, keyName, s3Client),
m_bytesRemaining(0),
m_partCount(0),
Expand All
@@ -75,6 +77,8 @@ m_totalParts(0),
m_fileStream(fileName.c_str(), std::ios::binary | std::ios::ate),
m_contentType(contentType),
m_metadata(std::move(metadata)),
m_serverSideEncryption(serverSideEncryption),
m_storageClass(storageClass),
m_createMultipartRetries(0),
m_createBucketRetries(0),
m_completeRetries(0),
Expand Down
Expand Up
@@ -113,8 +117,10 @@ UploadFileRequest::UploadFileRequest(const Aws::String& fileName,
const Aws::String& contentType,
const std::shared_ptr<Aws::S3::S3Client>& s3Client,
bool createBucket,
bool doConsistencyChecks) :
UploadFileRequest(fileName, bucketName, keyName, contentType, Aws::Map<Aws::String, Aws::String>{}, s3Client, createBucket, doConsistencyChecks)
bool doConsistencyChecks,
Aws::S3::Model::ServerSideEncryption serverSideEncryption,
Aws::S3::Model::StorageClass storageClass) :
UploadFileRequest(fileName, bucketName, keyName, contentType, Aws::Map<Aws::String, Aws::String>{}, s3Client, createBucket, doConsistencyChecks, serverSideEncryption, storageClass)
{
}
Expand All @@ -125,8 +131,10 @@ UploadFileRequest::UploadFileRequest(const Aws::String& fileName, const Aws::Map<Aws::String, Aws::String>& metadata, const std::shared_ptr<Aws::S3::S3Client>& s3Client, bool createBucket, bool doConsistencyChecks) : UploadFileRequest(fileName, bucketName, keyName, contentType, Aws::Map<Aws::String, Aws::String>(metadata), s3Client, createBucket, doConsistencyChecks) bool doConsistencyChecks, Aws::S3::Model::ServerSideEncryption serverSideEncryption, Aws::S3::Model::StorageClass storageClass) : UploadFileRequest(fileName, bucketName, keyName, contentType, Aws::Map<Aws::String, Aws::String>(metadata), s3Client, createBucket, doConsistencyChecks, serverSideEncryption, storageClass) { }
Expand Down Expand Up @@ -222,6 +230,16 @@ bool UploadFileRequest::CreateMultipartUpload() Aws::S3::Model::CreateMultipartUploadRequest createMultipartUploadRequest; createMultipartUploadRequest.SetBucket(GetBucketName()); createMultipartUploadRequest.SetKey(GetKeyName());
if (m_serverSideEncryption != Aws::S3::Model::ServerSideEncryption::NOT_SET) { createMultipartUploadRequest.SetServerSideEncryption(m_serverSideEncryption); } if (m_storageClass != Aws::S3::Model::StorageClass::NOT_SET) { createMultipartUploadRequest.SetStorageClass(m_storageClass); }
// not mandatory - defaults to binary in S3 if (m_contentType.length()) { Expand Down Expand Up @@ -810,6 +828,15 @@ bool UploadFileRequest::DoSingleObjectUpload(std::shared_ptr<Aws::IOStream>& str putObjectRequest.SetMetadata(m_metadata); } putObjectRequest.SetKey(GetKeyName());
if (m_serverSideEncryption != Aws::S3::Model::ServerSideEncryption::NOT_SET) { putObjectRequest.SetServerSideEncryption(m_serverSideEncryption); } if (m_storageClass != Aws::S3::Model::StorageClass::NOT_SET) { putObjectRequest.SetStorageClass(m_storageClass); }
putObjectRequest.SetDataSentEventHandler(std::bind(&UploadFileRequest::OnDataSent, this, std::placeholders::_1, std::placeholders::_2));
Expand Down
Expand All @@ -125,8 +131,10 @@ UploadFileRequest::UploadFileRequest(const Aws::String& fileName, const Aws::Map<Aws::String, Aws::String>& metadata, const std::shared_ptr<Aws::S3::S3Client>& s3Client, bool createBucket, bool doConsistencyChecks) : UploadFileRequest(fileName, bucketName, keyName, contentType, Aws::Map<Aws::String, Aws::String>(metadata), s3Client, createBucket, doConsistencyChecks) bool doConsistencyChecks, Aws::S3::Model::ServerSideEncryption serverSideEncryption, Aws::S3::Model::StorageClass storageClass) : UploadFileRequest(fileName, bucketName, keyName, contentType, Aws::Map<Aws::String, Aws::String>(metadata), s3Client, createBucket, doConsistencyChecks, serverSideEncryption, storageClass) { }
Expand Down Expand Up @@ -222,6 +230,16 @@ bool UploadFileRequest::CreateMultipartUpload() Aws::S3::Model::CreateMultipartUploadRequest createMultipartUploadRequest; createMultipartUploadRequest.SetBucket(GetBucketName()); createMultipartUploadRequest.SetKey(GetKeyName());
if (m_serverSideEncryption != Aws::S3::Model::ServerSideEncryption::NOT_SET) { createMultipartUploadRequest.SetServerSideEncryption(m_serverSideEncryption); } if (m_storageClass != Aws::S3::Model::StorageClass::NOT_SET) { createMultipartUploadRequest.SetStorageClass(m_storageClass); }
// not mandatory - defaults to binary in S3 if (m_contentType.length()) { Expand Down Expand Up @@ -810,6 +828,15 @@ bool UploadFileRequest::DoSingleObjectUpload(std::shared_ptr<Aws::IOStream>& str putObjectRequest.SetMetadata(m_metadata); } putObjectRequest.SetKey(GetKeyName());
if (m_serverSideEncryption != Aws::S3::Model::ServerSideEncryption::NOT_SET) { putObjectRequest.SetServerSideEncryption(m_serverSideEncryption); } if (m_storageClass != Aws::S3::Model::StorageClass::NOT_SET) { putObjectRequest.SetStorageClass(m_storageClass); }
putObjectRequest.SetDataSentEventHandler(std::bind(&UploadFileRequest::OnDataSent, this, std::placeholders::_1, std::placeholders::_2));
Expand Down