/* * 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 CopyPart operation. /// Uploads a part by copying data from an existing object as data source. /// public partial class CopyPartRequest : AmazonWebServiceRequest { private string srcBucket; private string srcKey; private string srcVersionId; private string dstBucket; private string dstKey; private string uploadId; private List etagsToMatch; private List etagsToNotMatch; private DateTime? modifiedSinceDate; private DateTime? unmodifiedSinceDate; private int? partNumber; private long? firstByte; private long? lastByte; private string expectedBucketOwner; private string expectedSourceBucketOwner; [Obsolete("Use ServerSideEncryptionMethod in InitiateMultipartUploadRequest instead.")] private ServerSideEncryptionMethod serverSideEncryption; private ServerSideEncryptionCustomerMethod serverSideCustomerEncryption; private string serverSideEncryptionCustomerProvidedKey; private string serverSideEncryptionCustomerProvidedKeyMD5; [Obsolete("Use ServerSideEncryptionKeyManagementServiceKeyId in InitiateMultipartUploadRequest instead.")] private string serverSideEncryptionKeyManagementServiceKeyId; private ServerSideEncryptionCustomerMethod copySourceServerSideCustomerEncryption; private string copySourceServerSideEncryptionCustomerProvidedKey; private string copySourceServerSideEncryptionCustomerProvidedKeyMD5; /// /// The name of the bucket containing the object to copy. /// public string SourceBucket { get { return this.srcBucket; } set { this.srcBucket = value; } } /// /// Checks if SourceBucket property is set. /// /// true if SourceBucket property is set. internal bool IsSetSourceBucket() { return !System.String.IsNullOrEmpty(this.srcBucket); } /// /// The key of the object to copy. /// /// /// This property will be used as part of the resource path of the HTTP request. In .NET the System.Uri class /// is used to construct the uri for the request. The System.Uri class will canonicalize the uri string by compacting characters like "..". /// For example an object key of "foo/../bar/file.txt" will be transformed into "bar/file.txt" because the ".." /// is interpreted as use parent directory. For further information view the documentation for /// the Uri class: https://docs.microsoft.com/en-us/dotnet/api/system.uri /// public string SourceKey { get { return this.srcKey; } set { this.srcKey = value; } } /// /// Checks if SourceKey property is set. /// /// true if SourceKey property is set. internal bool IsSetSourceKey() { return !System.String.IsNullOrEmpty(this.srcKey); } /// /// Specifies a particular version of the source object to copy. By default the latest version is copied. /// public string SourceVersionId { get { return this.srcVersionId; } set { this.srcVersionId = value; } } /// /// Checks if SourceVersionId property is set. /// /// true if SourceVersionId property is set. internal bool IsSetSourceVersionId() { return !System.String.IsNullOrEmpty(this.srcVersionId); } /// /// The name of the bucket to contain the copy of the source object. /// /// The bucket name. /// /// /// 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 DestinationBucket { get { return this.dstBucket; } set { this.dstBucket = value; } } /// /// Checks if DestinationBucket property is set. /// /// true if DestinationBucket property is set. internal bool IsSetDestinationBucket() { return !System.String.IsNullOrEmpty(this.dstBucket); } /// /// The key to be given to the copy of the source object. /// /// /// This property will be used as part of the resource path of the HTTP request. In .NET the System.Uri class /// is used to construct the uri for the request. The System.Uri class will canonicalize the uri string by compacting characters like "..". /// For example an object key of "foo/../bar/file.txt" will be transformed into "bar/file.txt" because the ".." /// is interpreted as use parent directory. For further information view the documentation for /// the Uri class: https://docs.microsoft.com/en-us/dotnet/api/system.uri /// public string DestinationKey { get { return this.dstKey; } set { this.dstKey = value; } } /// /// Checks if DestinationKey property is set. /// /// true if DestinationKey property is set. internal bool IsSetDestinationKey() { return !System.String.IsNullOrEmpty(this.dstKey); } /// /// The ID identifying multipart upload for which we are copying a part. /// public string UploadId { get { return this.uploadId; } set { this.uploadId = value; } } /// /// Checks if UploadId property is set. /// /// true if UploadId property is set. internal bool IsSetUploadId() { return !System.String.IsNullOrEmpty(this.uploadId); } /// /// Collection of ETags to be matched as a pre-condition for copying the source object /// otherwise returns a PreconditionFailed. /// /// /// Copies the object if its entity tag (ETag) matches one of /// the specified tags; otherwise return a 412 (precondition failed). /// Constraints: This property can be used with IfUnmodifiedSince, /// but cannot be used with other conditional copy properties. /// public List ETagToMatch { get { if (this.etagsToMatch == null) { this.etagsToMatch = new List(); } return this.etagsToMatch; } set { this.etagsToMatch = value; } } /// /// Checks if ETagsToMatch property is set. /// /// true if ETagToMatch property is set. internal bool IsSetETagToMatch() { return ((etagsToMatch != null) && (etagsToMatch.Count > 0)); } /// /// Collection of ETags that must not be matched as a pre-condition for copying the source object /// otherwise returns a PreconditionFailed. /// /// /// Copies the object if its entity tag (ETag) does not match any of the specified /// tags; otherwise returns a 412 (failed condition). /// Constraints: This header can be used with IfModifiedSince, but cannot /// be used with other conditional copy properties. /// public List ETagsToNotMatch { get { if (this.etagsToNotMatch == null) { this.etagsToNotMatch = new List(); } return this.etagsToNotMatch; } set { this.etagsToNotMatch = value; } } /// /// Checks if ETagToNotMatch property is set. /// /// true if ETagToNotMatch property is set. internal bool IsSetETagToNotMatch() { return ((etagsToNotMatch != null) && (etagsToNotMatch.Count > 0)); } /// /// Copies the object if it has been modified since the specified time, otherwise returns a PreconditionFailed. /// /// /// Copies the object if it has been modified since the /// specified time; otherwise returns a 412 (failed condition). /// Constraints: This property can be used with ETagToNotMatch, /// but cannot be used with other conditional copy properties. /// public DateTime ModifiedSinceDate { get { return this.modifiedSinceDate.GetValueOrDefault(); } set { this.modifiedSinceDate = value; } } /// /// Checks if ModifiedSinceDate property is set. /// /// true if ModifiedSinceDate property is set. internal bool IsSetModifiedSinceDate() { return this.modifiedSinceDate.HasValue; } /// /// Copies the object if it has not been modified since the specified time, otherwise returns a PreconditionFailed. /// /// /// Copies the object if it hasn't been modified since the /// specified time; otherwise returns a 412 (precondition failed). /// Constraints: This property can be used with ETagToMatch, /// but cannot be used with other conditional copy properties. /// public DateTime UnmodifiedSinceDate { get { return this.unmodifiedSinceDate.GetValueOrDefault(); } set { this.unmodifiedSinceDate = value; } } /// /// Checks if UnmodifiedSinceDate property is set. /// /// true if UnmodifiedSinceDate property is set. internal bool IsSetUnmodifiedSinceDate() { return this.unmodifiedSinceDate.HasValue; } /// /// The number of the part to be copied. /// /// /// Valid part numbers are from 1 to 10,000 inclusive and will uniquely identify the part /// and determine the relative ordering within the destination object. If a part already /// exists with the PartNumber it will be overwritten. /// public int PartNumber { get { return this.partNumber.GetValueOrDefault(); } set { this.partNumber = value; } } /// /// Checks if PartNumber property is set. /// /// true if PartNumber property is set. internal bool IsSetPartNumber() { return this.partNumber.HasValue; } /// /// The location of the first byte in the range if only a portion of the /// source object is to be copied as the part. /// /// /// The LastByte property must also be set or this value will be ignored. /// public long FirstByte { get { return this.firstByte.GetValueOrDefault(); } set { this.firstByte = value; } } /// /// Checks if FirstByte property is set. /// /// true if FirstByte property is set. internal bool IsSetFirstByte() { return this.firstByte.HasValue; } /// /// The location of the last byte in the range if only a portion of the /// source object is to be copied as the part. /// /// /// The FirstByte property must also be set or this value will be ignored. /// public long LastByte { get { return this.lastByte.GetValueOrDefault(); } set { this.lastByte = value; } } /// /// Checks if LastByte property is set. /// /// true if LastByte property is set. internal bool IsSetLastByte() { return this.lastByte.HasValue; } /// /// /// This property is obsolete. Use ServerSideEncryptionMethod in InitiateMultipartUploadRequest instead. /// /// /// Default: None /// /// [Obsolete("Use ServerSideEncryptionMethod in InitiateMultipartUploadRequest instead.")] public ServerSideEncryptionMethod ServerSideEncryptionMethod { get { return this.serverSideEncryption; } set { this.serverSideEncryption = value; } } /// /// Checks if ServerSideEncryptionMethod property is set. /// /// true if ServerSideEncryptionMethod property is set. [Obsolete("Use ServerSideEncryptionMethod in InitiateMultipartUploadRequest instead.")] 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); } /// /// This property is obsolete. Use ServerSideEncryptionKeyManagementServiceKeyId in InitiateMultipartUploadRequest instead. /// [Obsolete("Use ServerSideEncryptionKeyManagementServiceKeyId in InitiateMultipartUploadRequest instead.")] [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. [Obsolete("Use ServerSideEncryptionKeyManagementServiceKeyId in InitiateMultipartUploadRequest instead.")] internal bool IsSetServerSideEncryptionKeyManagementServiceKeyId() { return !System.String.IsNullOrEmpty(this.serverSideEncryptionKeyManagementServiceKeyId); } /// /// The Server-side encryption algorithm to be used with the customer provided key. /// /// public ServerSideEncryptionCustomerMethod CopySourceServerSideEncryptionCustomerMethod { get { return this.copySourceServerSideCustomerEncryption; } set { this.copySourceServerSideCustomerEncryption = value; } } // Check to see if CopySourceServerSideEncryptionCustomerMethod property is set internal bool IsSetCopySourceServerSideEncryptionCustomerMethod() { return this.copySourceServerSideCustomerEncryption != null && this.copySourceServerSideCustomerEncryption != ServerSideEncryptionCustomerMethod.None; } /// /// The customer provided encryption key for the source object of the copy. /// /// Important: Amazon S3 does not store the encryption key you provide. /// /// [AWSProperty(Sensitive=true)] public string CopySourceServerSideEncryptionCustomerProvidedKey { get { return this.copySourceServerSideEncryptionCustomerProvidedKey; } set { this.copySourceServerSideEncryptionCustomerProvidedKey = value; } } /// /// Checks if CopySourceServerSideEncryptionCustomerProvidedKey property is set. /// /// true if CopySourceServerSideEncryptionCustomerProvidedKey property is set. internal bool IsSetCopySourceServerSideEncryptionCustomerProvidedKey() { return !System.String.IsNullOrEmpty(this.copySourceServerSideEncryptionCustomerProvidedKey); } /// /// The MD5 of the customer encryption key specified in the CopySourceServerSideEncryptionCustomerProvidedKey property. The MD5 is /// base 64 encoded. This field is optional, the SDK will calculate the MD5 if this is not set. /// public string CopySourceServerSideEncryptionCustomerProvidedKeyMD5 { get { return this.copySourceServerSideEncryptionCustomerProvidedKeyMD5; } set { this.copySourceServerSideEncryptionCustomerProvidedKeyMD5 = value; } } /// /// Checks if CopySourceServerSideEncryptionCustomerProvidedKeyMD5 property is set. /// /// true if CopySourceServerSideEncryptionCustomerProvidedKey property is set. internal bool IsSetCopySourceServerSideEncryptionCustomerProvidedKeyMD5() { return !System.String.IsNullOrEmpty(this.copySourceServerSideEncryptionCustomerProvidedKeyMD5); } /// /// The account ID of the expected destination bucket owner. /// If the destination 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); } /// /// The account ID of the expected source bucket owner. /// If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. /// public string ExpectedSourceBucketOwner { get { return this.expectedSourceBucketOwner; } set { this.expectedSourceBucketOwner = value; } } /// /// Checks to see if ExpectedSourceBucketOwner is set. /// /// true, if ExpectedSourceBucketOwner property is set. internal bool IsSetExpectedSourceBucketOwner() { return !String.IsNullOrEmpty(this.expectedSourceBucketOwner); } } }