| 100 | } |
| 101 | |
| 102 | minifi::utils::optional<PutObjectResult> S3WrapperBase::putObject(const PutObjectRequestParameters& put_object_params, std::shared_ptr<Aws::IOStream> data_stream) { |
| 103 | Aws::S3::Model::PutObjectRequest request; |
| 104 | request.SetBucket(put_object_params.bucket); |
| 105 | request.SetKey(put_object_params.object_key); |
| 106 | request.SetStorageClass(STORAGE_CLASS_MAP.at(put_object_params.storage_class)); |
| 107 | request.SetServerSideEncryption(SERVER_SIDE_ENCRYPTION_MAP.at(put_object_params.server_side_encryption)); |
| 108 | request.SetContentType(put_object_params.content_type); |
| 109 | request.SetMetadata(put_object_params.user_metadata_map); |
| 110 | request.SetBody(data_stream); |
| 111 | request.SetGrantFullControl(put_object_params.fullcontrol_user_list); |
| 112 | request.SetGrantRead(put_object_params.read_permission_user_list); |
| 113 | request.SetGrantReadACP(put_object_params.read_acl_user_list); |
| 114 | request.SetGrantWriteACP(put_object_params.write_acl_user_list); |
| 115 | setCannedAcl(request, put_object_params.canned_acl); |
| 116 | |
| 117 | auto aws_result = sendPutObjectRequest(request); |
| 118 | if (!aws_result) { |
| 119 | return minifi::utils::nullopt; |
| 120 | } |
| 121 | |
| 122 | PutObjectResult result; |
| 123 | // Etags are returned by AWS in quoted form that should be removed |
| 124 | result.etag = minifi::utils::StringUtils::removeFramingCharacters(aws_result.value().GetETag(), '"'); |
| 125 | result.version = aws_result.value().GetVersionId(); |
| 126 | |
| 127 | // GetExpiration returns a string pair with a date and a ruleid in 'expiry-date=\"<DATE>\", rule-id=\"<RULEID>\"' format |
| 128 | // s3.expiration only needs the date member of this pair |
| 129 | result.expiration_time = getExpiration(aws_result.value().GetExpiration()).expiration_time; |
| 130 | result.ssealgorithm = getEncryptionString(aws_result.value().GetServerSideEncryption()); |
| 131 | return result; |
| 132 | } |
| 133 | |
| 134 | bool S3WrapperBase::deleteObject(const std::string& bucket, const std::string& object_key, const std::string& version) { |
| 135 | Aws::S3::Model::DeleteObjectRequest request; |