/*
* Copyright 2010-2013 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;
[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.
///
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.
///
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.
///
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.
///
///
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.")]
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.
///
///
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);
}
}
}