/*
*Copyright Amazon.com, Inc.or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
*You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
*or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.S3.Model
{
///
/// Container for the parameters to the WriteGetObjectResponse operation.
/// Passes transformed objects to a GetObject
operation when using Object
/// Lambda Access Points. For information about Object Lambda Access Points, see Transforming
/// objects with Object Lambda Access Points in the Amazon S3 User Guide.
///
///
///
/// This operation supports metadata that can be returned by GetObject,
/// in addition to RequestRoute
, RequestToken
, StatusCode
,
/// ErrorCode
, and ErrorMessage
. The GetObject
/// response metadata is supported so that the WriteGetObjectResponse
caller,
/// typically an Lambda function, can provide the same metadata when it internally invokes
/// GetObject
. When WriteGetObjectResponse
is called by a customer-owned
/// Lambda function, the metadata returned to the end user GetObject
call
/// might differ from what Amazon S3 would normally return.
///
///
///
/// You can include any number of metadata headers. When including a metadata header,
/// it should be prefaced with x-amz-meta
. For example, x-amz-meta-my-custom-header:
/// MyCustomValue
. The primary use case for this is to forward GetObject
/// metadata.
///
///
///
/// Amazon Web Services provides some prebuilt Lambda functions that you can use with
/// S3 Object Lambda to detect and redact personally identifiable information (PII) and
/// decompress S3 objects. These Lambda functions are available in the Amazon Web Services
/// Serverless Application Repository, and can be selected through the Amazon Web Services
/// Management Console when you create your Object Lambda Access Point.
///
///
///
/// Example 1: PII Access Control - This Lambda function uses Amazon Comprehend, a natural
/// language processing (NLP) service using machine learning to find insights and relationships
/// in text. It automatically detects personally identifiable information (PII) such as
/// names, addresses, dates, credit card numbers, and social security numbers from documents
/// in your Amazon S3 bucket.
///
///
///
/// Example 2: PII Redaction - This Lambda function uses Amazon Comprehend, a natural
/// language processing (NLP) service using machine learning to find insights and relationships
/// in text. It automatically redacts personally identifiable information (PII) such as
/// names, addresses, dates, credit card numbers, and social security numbers from documents
/// in your Amazon S3 bucket.
///
///
///
/// Example 3: Decompression - The Lambda function S3ObjectLambdaDecompression, is equipped
/// to decompress objects stored in S3 in one of six compressed file formats including
/// bzip2, gzip, snappy, zlib, zstandard and ZIP.
///
///
///
/// For information on how to view and use these functions, see Using
/// Amazon Web Services built Lambda functions in the Amazon S3 User Guide.
///
///
public partial class WriteGetObjectResponseRequest : AmazonWebServiceRequest
{
private string requestRoute;
private string requestToken;
private int? statusCode;
private string errorCode;
private string errorMessage;
private string acceptRanges;
private string cacheControl;
private string _checksumCRC32;
private string _checksumCRC32C;
private string _checksumSHA1;
private string _checksumSHA256;
private string contentDisposition;
private string contentEncoding;
private string contentLanguage;
private long? contentLength;
private string contentRange;
private string contentType;
private bool? deleteMarker;
private string eTag;
private DateTime? expires;
private string expiration;
private DateTime? lastModified;
private int? missingMeta;
private MetadataCollection metadataCollection = new MetadataCollection();
private ObjectLockMode objectLockMode;
private ObjectLockLegalHoldStatus objectLockLegalHoldStatus;
private DateTime? objectLockRetainUntilDate;
private int? partsCount;
private ReplicationStatus replicationStatus;
private RequestCharged requestCharged;
private string restore;
private ServerSideEncryptionMethod serverSideEncryption;
private ServerSideEncryptionCustomerMethod sSECustomerAlgorithm;
private string sSEKMSKeyId;
private string sSECustomerKeyMD5;
private S3StorageClass storageClass;
private int? tagCount;
private string versionId;
private bool? bucketKeyEnabled;
private Stream inputStream;
///
/// Route prefix to the HTTP URL generated.
///
public string RequestRoute
{
get { return this.requestRoute; }
set { this.requestRoute = value; }
}
internal bool IsSetRequestRoute()
{
return !(string.IsNullOrEmpty(this.requestRoute));
}
///
/// A single use encrypted token that maps WriteGetObjectResponse
to the end user GetObject
request.
///
public string RequestToken
{
get { return this.requestToken; }
set { this.requestToken = value; }
}
internal bool IsSetRequestToken()
{
return !(string.IsNullOrEmpty(this.requestToken));
}
///
/// The integer status code for an HTTP response of a corresponding GetObject
request.
/// The following is a list of status codes.
/// - 200 - OK
- 206 - Partial Content
- 304 - Not Modified
- 400 - Bad Request
- 401 - Unauthorized
- 403 - Forbidden
- 404 - Not Found
- 405 - Method Not Allowed
- 409 - Conflict
- 411 - Length Required
- 412 - Precondition Failed
- 416 - Range Not Satisfiable
- 500 - Internal Server Error
- 503 - Service Unavailable
///
public int? StatusCode
{
get { return this.statusCode; }
set { this.statusCode = value; }
}
internal bool IsSetStatusCode()
{
return this.statusCode.HasValue;
}
///
/// A string that uniquely identifies an error condition. Returned in <Code> tag of error XML response for corresponding GetObject call. Cannot be used with successful StatusCode
header or when transformed object is provided in body.
///
public string ErrorCode
{
get { return this.errorCode; }
set { this.errorCode = value; }
}
internal bool IsSetErrorCode()
{
return !(string.IsNullOrEmpty(this.errorCode));
}
///
/// Contains a generic description of the error condition. Returned in <Message> tag of error XML response for corresponding GetObject call. Cannot be used with successful StatusCode
header or when transformed object is provided in body.
///
public string ErrorMessage
{
get { return this.errorMessage; }
set { this.errorMessage = value; }
}
internal bool IsSetErrorMessage()
{
return !(string.IsNullOrEmpty(this.errorMessage));
}
///
/// Indicates that a range of bytes was specified.
///
public string AcceptRanges
{
get { return this.acceptRanges; }
set { this.acceptRanges = value; }
}
internal bool IsSetAcceptRanges()
{
return this.acceptRanges != null;
}
///
/// Specifies caching behavior along the request/reply chain.
///
public string CacheControl
{
get { return this.cacheControl; }
set { this.cacheControl = value; }
}
internal bool IsSetCacheControl()
{
return !(string.IsNullOrEmpty(this.cacheControl));
}
///
/// Gets and sets the property ChecksumCRC32.
///
/// This header can be used as a data integrity check to verify that the data received
/// is the same data that was originally sent. This specifies the base64-encoded, 32-bit
/// CRC32 checksum of the object. For more information, see
/// Checking object integrity in the Amazon S3 User Guide.
///
///
public string ChecksumCRC32
{
get { return this._checksumCRC32; }
set { this._checksumCRC32 = value; }
}
// Check to see if ChecksumCRC32 property is set
internal bool IsSetChecksumCRC32()
{
return this._checksumCRC32 != null;
}
///
/// Gets and sets the property ChecksumCRC32C.
///
/// This header can be used as a data integrity check to verify that the data received
/// is the same data that was originally sent. This specifies the base64-encoded, 32-bit
/// CRC32C checksum of the object. For more information, see
/// Checking object integrity in the Amazon S3 User Guide.
///
///
public string ChecksumCRC32C
{
get { return this._checksumCRC32C; }
set { this._checksumCRC32C = value; }
}
// Check to see if ChecksumCRC32C property is set
internal bool IsSetChecksumCRC32C()
{
return this._checksumCRC32C != null;
}
///
/// Gets and sets the property ChecksumSHA1.
///
/// This header can be used as a data integrity check to verify that the data received
/// is the same data that was originally sent. This specifies the base64-encoded, 160-bit
/// SHA-1 digest of the object. For more information, see
/// Checking object integrity in the Amazon S3 User Guide.
///
///
public string ChecksumSHA1
{
get { return this._checksumSHA1; }
set { this._checksumSHA1 = value; }
}
// Check to see if ChecksumSHA1 property is set
internal bool IsSetChecksumSHA1()
{
return this._checksumSHA1 != null;
}
///
/// Gets and sets the property ChecksumSHA256.
///
/// This header can be used as a data integrity check to verify that the data received
/// is the same data that was originally sent. This specifies the base64-encoded, 256-bit
/// SHA-256 digest of the object. For more information, see
/// Checking object integrity in the Amazon S3 User Guide.
///
///
public string ChecksumSHA256
{
get { return this._checksumSHA256; }
set { this._checksumSHA256 = value; }
}
// Check to see if ChecksumSHA256 property is set
internal bool IsSetChecksumSHA256()
{
return this._checksumSHA256 != null;
}
///
/// Specifies presentational information for the object.
///
public string ContentDisposition
{
get { return this.contentDisposition; }
set { this.contentDisposition = value; }
}
internal bool IsSetContentDisposition()
{
return !(string.IsNullOrEmpty(this.contentDisposition));
}
///
/// Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.
///
public string ContentEncoding
{
get { return this.contentEncoding; }
set { this.contentEncoding = value; }
}
internal bool IsSetContentEncoding()
{
return !(string.IsNullOrEmpty(this.contentEncoding));
}
///
/// The language the content is in.
///
public string ContentLanguage
{
get { return this.contentLanguage; }
set { this.contentLanguage = value; }
}
internal bool IsSetContentLanguage()
{
return !(string.IsNullOrEmpty(this.contentLanguage));
}
///
/// The size of the body in bytes.
///
public long? ContentLength
{
get { return this.contentLength; }
set { this.contentLength = value; }
}
internal bool IsSetContentLength()
{
return this.contentLength.HasValue;
}
///
/// The portion of the object returned in the response.
///
public string ContentRange
{
get { return this.contentRange; }
set { this.contentRange = value; }
}
internal bool IsSetContentRange()
{
return !(string.IsNullOrEmpty(this.contentRange));
}
///
/// A standard MIME type describing the format of the object data.
///
public string ContentType
{
get { return this.contentType; }
set { this.contentType = value; }
}
internal bool IsSetContentType()
{
return !(string.IsNullOrEmpty(this.contentType));
}
///
/// Specifies whether an object stored in Amazon S3 is (true
) or is not (false
) a delete marker.
///
public bool DeleteMarker
{
get { return this.deleteMarker.GetValueOrDefault(); }
set { this.deleteMarker = value; }
}
internal bool IsSetDeleteMarker()
{
return deleteMarker.HasValue;
}
///
/// An ETag is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.
///
public string ETag
{
get { return this.eTag; }
set { this.eTag = value; }
}
internal bool IsSetETag()
{
return this.eTag != null;
}
///
/// The date and time at which the object is no longer cacheable.
///
public DateTime Expires
{
get { return this.expires.GetValueOrDefault(); }
set { this.expires = value; }
}
internal bool IsSetExpires()
{
return this.expires.HasValue;
}
///
/// If object stored in Amazon S3 expiration is configured (see PUT Bucket lifecycle) it includes expiry-date and rule-id key-value pairs providing object expiration information. The value of the rule-id is URL encoded.
///
public string Expiration
{
get { return this.expiration; }
set { this.expiration = value; }
}
internal bool IsSetExpiration()
{
return !(string.IsNullOrEmpty(this.expiration));
}
///
/// Date and time the object was last modified.
///
public DateTime LastModified
{
get { return this.lastModified.GetValueOrDefault(); }
set { this.lastModified = value; }
}
internal bool IsSetLastModified()
{
return this.lastModified.HasValue;
}
///
/// Set to the number of metadata entries not returned in x-amz-meta
headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers.
///
public int? MissingMeta
{
get { return this.missingMeta; }
set { this.missingMeta = value; }
}
internal bool IsSetMissingMeta()
{
return this.missingMeta.HasValue;
}
///
/// A map of metadata to store with the object in S3.
///
public MetadataCollection Metadata
{
get
{
if (this.metadataCollection == null)
this.metadataCollection = new MetadataCollection();
return this.metadataCollection;
}
}
///
/// Indicates whether an object stored in Amazon S3 has Object Lock enabled. For more information about S3 Object Lock, see Object Lock.
///
public ObjectLockMode ObjectLockMode
{
get { return this.objectLockMode; }
set { this.objectLockMode = value; }
}
internal bool IsSetObjectLockMode()
{
return this.objectLockMode != null;
}
///
/// Indicates whether object stored in Amazon S3 has an active legal hold.
///
public ObjectLockLegalHoldStatus ObjectLockLegalHoldStatus
{
get { return this.objectLockLegalHoldStatus; }
set { this.objectLockLegalHoldStatus = value; }
}
internal bool IsSetObjectLockLegalHoldStatus()
{
return this.objectLockLegalHoldStatus != null;
}
///
/// Date and time when Object Lock is configured to expire.
///
public DateTime ObjectLockRetainUntilDate
{
get { return this.objectLockRetainUntilDate.GetValueOrDefault(); }
set { this.objectLockRetainUntilDate = value; }
}
internal bool IsSetObjectLockRetainUntilDate()
{
return this.objectLockRetainUntilDate.HasValue;
}
///
/// The count of parts this object has.
///
public int? PartsCount
{
get { return this.partsCount; }
set { this.partsCount = value; }
}
internal bool IsSetPartsCount()
{
return this.partsCount.HasValue;
}
///
/// Indicates if request involves bucket that is either a source or destination in a Replication rule. For more information about S3 Replication, see Replication.
///
public ReplicationStatus ReplicationStatus
{
get { return this.replicationStatus; }
set { this.replicationStatus = value; }
}
internal bool IsSetReplicationStatus()
{
return ReplicationStatus != null;
}
///
/// If present, indicates that the requester was successfully charged for the request.
///
public RequestCharged RequestCharged
{
get { return this.requestCharged; }
set { this.requestCharged = value; }
}
internal bool IsSetRequestCharged()
{
return requestCharged != null;
}
///
/// Provides information about object restoration operation and expiration time of the restored object copy.
///
public string Restore
{
get { return this.restore; }
set { this.restore = value; }
}
internal bool IsSetRestore()
{
return !(string.IsNullOrEmpty(this.restore));
}
///
///
/// The server-side encryption algorithm used when storing requested object in Amazon
/// S3 (for example, AES256, aws:kms
).
///
///
public ServerSideEncryptionMethod ServerSideEncryptionMethod
{
get { return this.serverSideEncryption; }
set { this.serverSideEncryption = value; }
}
internal bool IsSetServerSideEncryptionMethod()
{
return this.serverSideEncryption != null && this.serverSideEncryption != ServerSideEncryptionMethod.None;
}
///
/// Encryption algorithm used if server-side encryption with a customer-provided encryption key was specified for object stored in Amazon S3.
///
public ServerSideEncryptionCustomerMethod SSECustomerAlgorithm
{
get { return this.sSECustomerAlgorithm; }
set { this.sSECustomerAlgorithm = value; }
}
internal bool IsSetSSECustomerAlgorithm()
{
return this.sSECustomerAlgorithm != null && this.sSECustomerAlgorithm != ServerSideEncryptionCustomerMethod.None;
}
///
/// Gets and sets the property SSEKMSKeyId.
///
/// If present, specifies the ID of the Amazon Web Services Key Management Service (Amazon
/// Web Services KMS) symmetric encryption customer managed key that was used for stored
/// in Amazon S3 object.
///
///
public string SSEKMSKeyId
{
get { return this.sSEKMSKeyId; }
set { this.sSEKMSKeyId = value; }
}
internal bool IsSetSSEKMSKeyId()
{
return !System.String.IsNullOrEmpty(this.sSEKMSKeyId);
}
///
/// 128-bit MD5 digest of customer-provided encryption key used in Amazon S3 to encrypt data stored in S3. For more information, see Server-Side Encryption (Using Customer-Provided Encryption Keys.
///
public string SSECustomerKeyMD5
{
get { return this.sSECustomerKeyMD5; }
set { this.sSECustomerKeyMD5 = value; }
}
internal bool IsSetSSECustomerKeyMD5()
{
return !System.String.IsNullOrEmpty(this.sSECustomerKeyMD5);
}
///
/// The class of storage used to store object in Amazon S3.
///
public S3StorageClass StorageClass
{
get { return this.storageClass; }
set { this.storageClass = value; }
}
internal bool IsSetStorageClass()
{
return this.storageClass != null;
}
///
/// The number of tags, if any, on the object.
///
public int? TagCount
{
get { return this.tagCount; }
set { this.tagCount = value; }
}
internal bool IsSetTagCount()
{
return this.tagCount.HasValue;
}
///
/// VersionId used to reference a specific version of the object.
///
public string VersionId
{
get { return this.versionId; }
set { this.versionId = value; }
}
internal bool IsSetVersionId()
{
return !(string.IsNullOrEmpty(this.versionId));
}
///
/// Gets and sets the property BucketKeyEnabled.
///
/// Indicates whether the object stored in Amazon S3 uses an S3 bucket key for server-side
/// encryption with Amazon Web Services KMS (SSE-KMS).
///
///
public bool BucketKeyEnabled
{
get { return this.bucketKeyEnabled.GetValueOrDefault(); }
set { this.bucketKeyEnabled = value; }
}
internal bool IsSetBucketKeyEnabled()
{
return bucketKeyEnabled.HasValue;
}
///
/// The object data.
///
public Stream Body
{
get { return this.inputStream; }
set { this.inputStream = value; }
}
internal bool IsSetInputStream()
{
return this.inputStream != null;
}
}
}