/*
* 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);
}
}
}