/* * 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 PutObject operation. /// Adds an object to a bucket. You must have WRITE permissions on a bucket to add an /// object to it. /// /// /// /// Amazon S3 never adds partial objects; if you receive a success response, Amazon S3 /// added the entire object to the bucket. You cannot use PutObject to only /// update a single piece of metadata for an existing object. You must put the entire /// object with updated metadata if you want to update some values. /// /// /// /// Amazon S3 is a distributed system. If it receives multiple write requests for the /// same object simultaneously, it overwrites all but the last object written. To prevent /// objects from being deleted or overwritten, you can use Amazon /// S3 Object Lock. /// /// /// /// To ensure that data is not corrupted traversing the network, use the Content-MD5 /// header. When you use this header, Amazon S3 checks the object against the provided /// MD5 value and, if they do not match, returns an error. Additionally, you can calculate /// the MD5 while putting an object to Amazon S3 and compare the returned ETag to the /// calculated MD5 value. /// /// /// /// You have three mutually exclusive options to protect data using server-side encryption /// in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, /// the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services /// KMS keys (SSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with /// server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can /// optionally tell Amazon S3 to encrypt data at by rest using server-side encryption /// with other key options. For more information, see Using /// Server-Side Encryption. /// /// /// /// When adding a new object, You can use headers to grant ACL- based permissions. By default, all objects are private. /// Only the owner has full access control. When adding a new object, you can grant permissions /// to individual Amazon Web Services accounts or to predefined groups defined by Amazon /// S3. These permissions are then added to the ACL on the object. For more information, /// see Access /// Control List (ACL) Overview and Managing /// ACLs Using the REST API. /// /// /// /// If the bucket that you're uploading objects to uses the bucket owner enforced setting /// for S3 Object Ownership, ACLs are disabled and no longer affect permissions. Buckets /// that use this setting only accept PUT requests that don't specify an ACL or PUT requests /// that specify bucket owner full control ACLs, such as the bucket-owner-full-control /// canned ACL or an equivalent form of this ACL expressed in the XML format. PUT requests /// that contain other ACLs (for example, custom grants to certain Amazon Web Services /// accounts) fail and return a 400 error with the error code AccessControlListNotSupported. /// For more information, see /// Controlling ownership of objects and disabling ACLs in the Amazon S3 User Guide. /// /// /// /// If your bucket uses the bucket owner enforced setting for Object Ownership, all objects /// written to the bucket by any account will be owned by the bucket owner. /// /// /// /// By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. /// The STANDARD storage class provides high durability and high availability. Depending /// on performance needs, you can specify a different Storage Class. Amazon S3 on Outposts /// only uses the OUTPOSTS Storage Class. For more information, see Storage /// Classes in the Amazon S3 User Guide. /// /// /// /// If you enable versioning for a bucket, Amazon S3 automatically generates a unique /// version ID for the object being stored. Amazon S3 returns this ID in the response. /// When you enable versioning for a bucket, if Amazon S3 receives multiple write requests /// for the same object simultaneously, it stores all of the objects. /// /// /// /// For more information about versioning, see Adding /// Objects to Versioning Enabled Buckets. For information about returning the versioning /// state of a bucket, see GetBucketVersioning. /// /// /// /// For more information about related Amazon S3 APIs, see the following: /// /// /// public partial class PutObjectRequest : PutWithACLRequest { private S3CannedACL cannedACL; private bool? bucketKeyEnabled; private string bucketName; private string contentBody; private string expectedBucketOwner; private string key; private Stream inputStream; private string filePath; private bool autoCloseStream = true; private bool autoResetStreamPosition = true; private bool useChunkEncoding = true; private HeadersCollection headersCollection = new HeadersCollection(); private MetadataCollection metadataCollection = new MetadataCollection(); private string md5Digest; private ObjectLockLegalHoldStatus objectLockLegalHoldStatus; private ObjectLockMode objectLockMode; private DateTime? objectLockRetainUntilDate; private RequestPayer requestPayer; private ServerSideEncryptionMethod serverSideEncryption; private ServerSideEncryptionCustomerMethod serverSideCustomerEncryption; private string serverSideEncryptionCustomerProvidedKey; private string serverSideEncryptionCustomerProvidedKeyMD5; private string serverSideEncryptionKeyManagementServiceKeyId; private string serverSideEncryptionKeyManagementServiceEncryptionContext; private S3StorageClass storageClass; private List tagset = new List(); private string websiteRedirectLocation; private bool calculateContentMD5Header = false; private ChecksumAlgorithm _checksumAlgorithm; private string _checksumCRC32; private string _checksumCRC32C; private string _checksumSHA1; private string _checksumSHA256; /// /// Overriden to turn off sending SHA256 header. /// protected override bool IncludeSHA256Header { get { return false; } } /// /// Overriden to turn on expect 100 continue. /// protected override bool Expect100Continue { get { return true; } } /// /// A canned access control list (CACL) to apply to the object. /// Please refer to for /// information on S3 Canned ACLs. /// public S3CannedACL CannedACL { get { return this.cannedACL; } set { this.cannedACL = value; } } // Check to see if CannedACL property is set internal bool IsSetCannedACL() { return cannedACL != null && cannedACL != S3CannedACL.NoACL; } /// /// Gets and sets the property BucketKeyEnabled. /// /// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with /// server-side encryption using AWS KMS (SSE-KMS). Setting this header to true /// causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. /// /// /// /// Specifying this header with a PUT action doesn't affect bucket-level settings for /// S3 Bucket Key. /// /// public bool BucketKeyEnabled { get { return this.bucketKeyEnabled.GetValueOrDefault(); } set { this.bucketKeyEnabled = value; } } internal bool IsSetBucketKeyEnabled() { return bucketKeyEnabled.HasValue; } /// /// Gets and sets the property BucketName. /// /// The bucket name to which the PUT action was initiated. /// /// /// /// When using this action with an access point, you must direct requests to the access /// point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. /// When using this action with an access point through the Amazon Web Services SDKs, /// you provide the access point ARN in place of the bucket name. For more information /// about access point ARNs, see Using /// access points in the Amazon S3 User Guide. /// /// /// /// When you use this action with Amazon S3 on Outposts, you must direct requests to the /// S3 on Outposts hostname. The S3 on Outposts hostname takes the form AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. /// When you use this action with S3 on Outposts through the Amazon Web Services SDKs, /// you provide the Outposts access point ARN in place of the bucket name. For more information /// about S3 on Outposts ARNs, see What /// is S3 on Outposts? in the Amazon S3 User Guide. /// /// public string BucketName { get { return this.bucketName; } set { this.bucketName = value; } } // Check to see if Bucket property is set internal bool IsSetBucket() { return this.bucketName != null; } /// /// An MD5 digest for the content. /// /// /// /// The base64 encoded 128-bit MD5 digest of the message /// (without the headers) according to RFC 1864. This header /// can be used as a message integrity check to verify that /// the data is the same data that was originally sent. /// /// /// If supplied, after the file has been uploaded to S3, /// S3 checks to ensure that the MD5 hash of the uploaded file /// matches the hash supplied. /// /// /// Although it is optional, we recommend using the /// Content-MD5 mechanism as an end-to-end integrity check. /// /// public string MD5Digest { get { return this.md5Digest; } set { this.md5Digest = value; } } /// /// Checks if MD5Digest property is set. /// /// true if MD5Digest property is set. internal bool IsSetMD5Digest() { return !System.String.IsNullOrEmpty(this.md5Digest); } /// /// This is a convenience property for Headers.ContentType. /// public string ContentType { get { return this.Headers.ContentType; } set { this.Headers.ContentType = value; } } /// /// The account ID of the expected bucket owner. /// If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. /// public string ExpectedBucketOwner { get { return this.expectedBucketOwner; } set { this.expectedBucketOwner = value; } } /// /// Checks to see if ExpectedBucketOwner is set. /// /// true, if ExpectedBucketOwner property is set. internal bool IsSetExpectedBucketOwner() { return !String.IsNullOrEmpty(this.expectedBucketOwner); } /// /// Gets and sets Key property. This key is used to identify the object in S3. /// public string Key { get { return this.key; } set { this.key = value; } } // Check to see if Key property is set internal bool IsSetKey() { return this.key != null; } /// /// The collection of meta data for the request. /// public MetadataCollection Metadata { get { if (this.metadataCollection == null) this.metadataCollection = new MetadataCollection(); return this.metadataCollection; } internal set { this.metadataCollection = value; } } /// /// Gets and sets the property ObjectLockLegalHoldStatus. /// /// Specifies whether a legal hold will be applied to this object. For more information /// about S3 Object Lock, see Object /// Lock. /// /// public ObjectLockLegalHoldStatus ObjectLockLegalHoldStatus { get { return this.objectLockLegalHoldStatus; } set { this.objectLockLegalHoldStatus = value; } } // Check to see if ObjectLockLegalHoldStatus property is set internal bool IsSetObjectLockLegalHoldStatus() { return this.objectLockLegalHoldStatus != null; } /// /// Gets and sets the property ObjectLockMode. /// /// The Object Lock mode that you want to apply to this object. /// /// public ObjectLockMode ObjectLockMode { get { return this.objectLockMode; } set { this.objectLockMode = value; } } // Check to see if ObjectLockMode property is set internal bool IsSetObjectLockMode() { return this.objectLockMode != null; } /// /// Gets and sets the property ObjectLockRetainUntilDate. /// /// The date and time when you want this object's Object Lock to expire. /// /// public DateTime ObjectLockRetainUntilDate { get { return this.objectLockRetainUntilDate.GetValueOrDefault(); } set { this.objectLockRetainUntilDate = value; } } // Check to see if ObjectLockRetainUntilDate property is set internal bool IsSetObjectLockRetainUntilDate() { return this.objectLockRetainUntilDate.HasValue; } /// /// Confirms that the requester knows that she or he will be charged for the request. /// Bucket owners need not specify this parameter in their requests. /// public RequestPayer RequestPayer { get { return this.requestPayer; } set { this.requestPayer = value; } } /// /// Checks to see if RequetsPayer is set. /// /// true, if RequestPayer property is set. internal bool IsSetRequestPayer() { return requestPayer != null; } /// /// /// The server-side encryption algorithm used when storing this object in Amazon S3 (for /// example, AES256, aws:kms). /// /// public ServerSideEncryptionMethod ServerSideEncryptionMethod { get { return this.serverSideEncryption; } set { this.serverSideEncryption = value; } } // Check to see if ServerSideEncryption property is set internal bool IsSetServerSideEncryptionMethod() { return this.serverSideEncryption != null && this.serverSideEncryption != ServerSideEncryptionMethod.None; } /// /// The Server-side encryption algorithm to be used with the customer provided key. /// /// public ServerSideEncryptionCustomerMethod ServerSideEncryptionCustomerMethod { get { return this.serverSideCustomerEncryption; } set { this.serverSideCustomerEncryption = value; } } // Check to see if ServerSideEncryptionCustomerMethod property is set internal bool IsSetServerSideEncryptionCustomerMethod() { return this.serverSideCustomerEncryption != null && this.serverSideCustomerEncryption != ServerSideEncryptionCustomerMethod.None; } /// /// The base64-encoded encryption key for Amazon S3 to use to encrypt the object /// /// Using the encryption key you provide as part of your request Amazon S3 manages both the encryption, as it writes /// to disks, and decryption, when you access your objects. Therefore, you don't need to maintain any data encryption code. The only /// thing you do is manage the encryption keys you provide. /// /// /// When you retrieve an object, you must provide the same encryption key as part of your request. Amazon S3 first verifies /// the encryption key you provided matches, and then decrypts the object before returning the object data to you. /// /// /// Important: Amazon S3 does not store the encryption key you provide. /// /// [AWSProperty(Sensitive=true)] public string ServerSideEncryptionCustomerProvidedKey { get { return this.serverSideEncryptionCustomerProvidedKey; } set { this.serverSideEncryptionCustomerProvidedKey = value; } } /// /// Checks if ServerSideEncryptionCustomerProvidedKey property is set. /// /// true if ServerSideEncryptionCustomerProvidedKey property is set. internal bool IsSetServerSideEncryptionCustomerProvidedKey() { return !System.String.IsNullOrEmpty(this.serverSideEncryptionCustomerProvidedKey); } /// /// The MD5 of the customer encryption key specified in the ServerSideEncryptionCustomerProvidedKey property. The MD5 is /// base 64 encoded. This field is optional, the SDK will calculate the MD5 if this is not set. /// public string ServerSideEncryptionCustomerProvidedKeyMD5 { get { return this.serverSideEncryptionCustomerProvidedKeyMD5; } set { this.serverSideEncryptionCustomerProvidedKeyMD5 = value; } } /// /// Checks if ServerSideEncryptionCustomerProvidedKeyMD5 property is set. /// /// true if ServerSideEncryptionCustomerProvidedKey property is set. internal bool IsSetServerSideEncryptionCustomerProvidedKeyMD5() { return !System.String.IsNullOrEmpty(this.serverSideEncryptionCustomerProvidedKeyMD5); } /// /// Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. /// The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. /// /// Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. /// The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption /// context key-value pairs. This value is stored as object metadata and automatically /// gets passed on to Amazon Web Services KMS for future GetObject or CopyObject /// operations on this object. /// /// [AWSProperty(Sensitive=true)] public string ServerSideEncryptionKeyManagementServiceEncryptionContext { get { return this.serverSideEncryptionKeyManagementServiceEncryptionContext; } set { this.serverSideEncryptionKeyManagementServiceEncryptionContext = value; } } /// /// Checks if ServerSideEncryptionKeyManagementServiceEncryptionContext property is set. /// /// true if ServerSideEncryptionKeyManagementServiceEncryptionContext property is set. internal bool IsSetServerSideEncryptionKeyManagementServiceEncryptionContext() { return !System.String.IsNullOrEmpty(this.serverSideEncryptionKeyManagementServiceEncryptionContext); } /// /// The id of the AWS Key Management Service key that Amazon S3 should use to encrypt and decrypt the object. /// If a key id is not specified, the default key will be used for encryption and decryption. /// /// If x-amz-server-side-encryption has a valid value of aws:kms, /// this header specifies the ID of the Amazon Web Services Key Management Service (Amazon /// Web Services KMS) symmetric encryption customer managed key that was used for the /// object. If you specify x-amz-server-side-encryption:aws:kms, but do not /// provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the /// Amazon Web Services managed key to protect the data. If the KMS key does not exist /// in the same account issuing the command, you must use the full ARN and not just the /// ID. /// /// [AWSProperty(Sensitive=true)] public string ServerSideEncryptionKeyManagementServiceKeyId { get { return this.serverSideEncryptionKeyManagementServiceKeyId; } set { this.serverSideEncryptionKeyManagementServiceKeyId = value; } } /// /// Checks if ServerSideEncryptionKeyManagementServiceKeyId property is set. /// /// true if ServerSideEncryptionKeyManagementServiceKeyId property is set. internal bool IsSetServerSideEncryptionKeyManagementServiceKeyId() { return !System.String.IsNullOrEmpty(this.serverSideEncryptionKeyManagementServiceKeyId); } /// /// Gets and sets the property StorageClass. /// /// By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. /// The STANDARD storage class provides high durability and high availability. Depending /// on performance needs, you can specify a different Storage Class. Amazon S3 on Outposts /// only uses the OUTPOSTS Storage Class. For more information, see Storage /// Classes in the Amazon S3 User Guide. /// /// public S3StorageClass StorageClass { get { return this.storageClass; } set { this.storageClass = value; } } // Check to see if StorageClass property is set internal bool IsSetStorageClass() { return this.storageClass != null; } /// /// The tag-set for the object. The tag-set must be encoded as URL Query parameters. /// public List TagSet { get { return this.tagset; } set { this.tagset = value; } } /// /// Checks if Tagging property is set /// /// true if Tagging is set. internal bool IsSetTagSet() { return (this.tagset != null) && (this.tagset.Count > 0); } /// /// Gets and sets the property WebsiteRedirectLocation. /// /// If the bucket is configured as a website, redirects requests for this object to another /// object in the same bucket or to an external URL. Amazon S3 stores the value of this /// header in the object metadata. For information about object metadata, see Object /// Key and Metadata. /// /// /// /// In the following example, the request header sets the redirect to an object (anotherPage.html) /// in the same bucket: /// /// /// /// x-amz-website-redirect-location: /anotherPage.html /// /// /// /// In the following example, the request header sets the object redirect to another website: /// /// /// /// x-amz-website-redirect-location: http://www.example.com/ /// /// /// /// For more information about website hosting in Amazon S3, see Hosting /// Websites on Amazon S3 and How /// to Configure Website Page Redirects. /// /// public string WebsiteRedirectLocation { get { return this.websiteRedirectLocation; } set { this.websiteRedirectLocation = value; } } // Check to see if WebsiteRedirectLocation property is set internal bool IsSetWebsiteRedirectLocation() { return this.websiteRedirectLocation != null; } /// /// Input stream for the request; content for the request will be read from the stream. /// public Stream InputStream { get { return this.inputStream; } set { this.inputStream = value; } } // Check to see if Body property is set internal bool IsSetInputStream() { return this.inputStream != null; } /// /// /// The full path and name to a file to be uploaded. /// If this is set the request will upload the specified file to S3. /// /// /// For WinRT and Windows Phone this property must be in the form of "ms-appdata:///local/file.txt". /// /// public string FilePath { get { return this.filePath; } set { this.filePath = value; } } /// /// Text content to be uploaded. Use this property if you want to upload plaintext to S3. /// The content type will be set to 'text/plain'. /// public string ContentBody { get { return this.contentBody; } set { this.contentBody = value; } } /// /// If this value is set to true then the stream used with this request will be closed when all the content /// is read from the stream. /// Default: true. /// public bool AutoCloseStream { get { return this.autoCloseStream; } set { this.autoCloseStream = value; } } /// /// If this value is set to true then the stream will be seeked back to the start before being read for upload. /// Default: true. /// public bool AutoResetStreamPosition { get { return this.autoResetStreamPosition; } set { this.autoResetStreamPosition = value; } } /// /// WARNING: Setting DisableMD5Stream to true disables the MD5 data integrity check /// on this request. /// When true, MD5Stream will not be used in the upload request. This may increase /// upload performance under high CPU loads. The default value is null. When null, the /// AWSConfigsS3.DisableMD5Stream property value will be used. /// MD5Stream, SigV4 payload signing, and HTTPS each provide some data integrity /// verification. If DisableMD5Stream is true and DisablePayloadSigning is true, then the /// possibility of data corruption is completely dependant on HTTPS being the only remaining /// source of data integrity verification. /// public bool? DisableMD5Stream { get; set; } /// /// If this value is set to true then a chunked encoding upload will be used for the request. /// Default: true. /// public bool UseChunkEncoding { get { return this.useChunkEncoding; } set { this.useChunkEncoding = value; } } /// /// WARNING: Setting DisablePayloadSigning to true disables the SigV4 payload signing /// data integrity check on this request. /// If using SigV4, the DisablePayloadSigning flag controls if the payload should be /// signed on a request by request basis. By default this flag is null which will use the /// default client behavior. The default client behavior is to sign the payload. When /// DisablePayloadSigning is true, the request will be signed with an UNSIGNED-PAYLOAD value. /// Setting DisablePayloadSigning to true requires that the request is sent over a HTTPS /// connection. /// Under certain circumstances, such as uploading to S3 while using MD5 hashing, it may /// be desireable to use UNSIGNED-PAYLOAD to decrease signing CPU usage. This flag only applies /// to Amazon S3 PutObject and UploadPart requests. /// MD5Stream, SigV4 payload signing, and HTTPS each provide some data integrity /// verification. If DisableMD5Stream is true and DisablePayloadSigning is true, then the /// possibility of data corruption is completely dependant on HTTPS being the only remaining /// source of data integrity verification. /// public bool? DisablePayloadSigning { get; set; } /// /// The collection of headers for the request. /// public HeadersCollection Headers { get { if (this.headersCollection == null) this.headersCollection = new HeadersCollection(); return this.headersCollection; } internal set { this.headersCollection = value; } } /// /// Attach a callback that will be called as data is being sent to the AWS Service. /// public EventHandler StreamTransferProgress { get { return ((Amazon.Runtime.Internal.IAmazonWebServiceRequest)this).StreamUploadProgressCallback; } set { ((Amazon.Runtime.Internal.IAmazonWebServiceRequest)this).StreamUploadProgressCallback = value; } } /// /// Gets or sets whether the Content-MD5 header should be calculated for upload. /// public bool CalculateContentMD5Header { get { return this.calculateContentMD5Header; } set { this.calculateContentMD5Header = value; } } /// /// Gets and sets the property ChecksumAlgorithm. /// /// Indicates the algorithm used to create the checksum for the object. Amazon S3 will /// fail the request with a 400 error if there is no checksum associated with the object. /// For more information, see /// Checking object integrity in the Amazon S3 User Guide. /// /// /// /// If you provide an individual checksum, Amazon S3 will ignore any provided ChecksumAlgorithm. /// /// public ChecksumAlgorithm ChecksumAlgorithm { get { return this._checksumAlgorithm; } set { this._checksumAlgorithm = value; } } // Check to see if ChecksumAlgorithm property is set internal bool IsSetChecksumAlgorithm() { return this._checksumAlgorithm != null; } /// /// 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; } } }