/*******************************************************************************
* 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.
* *****************************************************************************
* __ _ _ ___
* ( )( \/\/ )/ __)
* /__\ \ / \__ \
* (_)(_) \/\/ (___/
*
* AWS SDK for .NET
* API Version: 2006-03-01
*
*/
using System;
using System.Collections.Generic;
using System.Text;
using Amazon.Runtime.Internal;
namespace Amazon.S3.Transfer
{
///
/// The base class for requests that return Amazon S3 objects.
///
public abstract class BaseDownloadRequest
{
private string bucketName;
private string key;
private string versionId;
private DateTime? modifiedSinceDate;
private DateTime? unmodifiedSinceDate;
private DateTime? modifiedSinceDateUtc;
private DateTime? unmodifiedSinceDateUtc;
private ChecksumMode checksumMode;
private ServerSideEncryptionCustomerMethod serverSideCustomerEncryption;
private string serverSideEncryptionCustomerProvidedKey;
private string serverSideEncryptionCustomerProvidedKeyMD5;
///
/// Gets or sets the name of the bucket.
///
///
/// The name of the bucket.
///
public string BucketName
{
get { return this.bucketName; }
set { this.bucketName = value; }
}
///
/// Gets whether or not the bucket name is set.
///
///
/// A value of true if the bucket name is set.
/// Returns false if otherwise.
///
internal bool IsSetBucketName()
{
return !System.String.IsNullOrEmpty(this.bucketName);
}
///
/// Gets or sets the key under which the Amazon S3 object is stored.
///
///
/// The key under which the Amazon S3 object is stored.
///
public string Key
{
get { return this.key; }
set { this.key = value; }
}
///
/// Gets whether or not the key property is set.
///
///
/// A value of true if key property is set.
/// Returns false if otherwise.
///
internal bool IsSetKey()
{
return !System.String.IsNullOrEmpty(this.key);
}
///
/// Gets or sets the version ID of the Amazon S3 object.
///
///
/// The version ID of the Amazon S3 object.
///
public string VersionId
{
get { return this.versionId; }
set { this.versionId = value; }
}
///
/// Checks if VersionId property is set.
///
/// true if VersionId property is set.
internal bool IsSetVersionId()
{
return !System.String.IsNullOrEmpty(this.versionId);
}
///
///
/// This property is deprecated. Setting this property results in non-UTC DateTimes not
/// being marshalled correctly. Use ModifiedSinceDateUtc instead. Setting either ModifiedSinceDate or
/// ModifiedSinceDateUtc results in both ModifiedSinceDate and ModifiedSinceDateUtc being assigned,
/// the latest assignment to either one of the two property is reflected in the value of both.
/// ModifiedSinceDate is provided for backwards compatibility only and assigning a non-Utc DateTime
/// to it results in the wrong timestamp being passed to the service.
///
/// Gets or sets the ModifiedSinceDate property.
///
///
/// The ModifiedSinceDate property.
///
[Obsolete("Setting this property results in non-UTC DateTimes not being marshalled correctly. " +
"Use ModifiedSinceDateUtc instead. Setting either ModifiedSinceDate or ModifiedSinceDateUtc results in both ModifiedSinceDate and " +
"ModifiedSinceDateUtc being assigned, the latest assignment to either one of the two property is " +
"reflected in the value of both. ModifiedSinceDate is provided for backwards compatibility only and " +
"assigning a non-Utc DateTime to it results in the wrong timestamp being passed to the service.", false)]
public DateTime ModifiedSinceDate
{
get { return this.modifiedSinceDate.GetValueOrDefault(); }
set
{
this.modifiedSinceDate = value;
this.modifiedSinceDateUtc = new DateTime(value.Ticks, DateTimeKind.Utc);
}
}
///
/// Gets or sets the ModifiedSinceDate property.
///
///
/// The ModifiedSinceDate property.
///
public DateTime ModifiedSinceDateUtc
{
get { return this.modifiedSinceDateUtc ?? default(DateTime); }
set
{
this.modifiedSinceDateUtc = value;
this.modifiedSinceDate = value;
}
}
// Check to see if ModifiedSinceDateUtc property is set
internal bool IsSetModifiedSinceDateUtc()
{
return this.modifiedSinceDateUtc.HasValue;
}
///
///
/// This property is deprecated. Setting this property results in non-UTC DateTimes not
/// being marshalled correctly. Use UnmodifiedSinceDateUtc instead. Setting either UnmodifiedSinceDate or
/// UnmodifiedSinceDateUtc results in both UnmodifiedSinceDate and UnmodifiedSinceDateUtc being assigned,
/// the latest assignment to either one of the two property is reflected in the value of both.
/// UnmodifiedSinceDate is provided for backwards compatibility only and assigning a non-Utc DateTime
/// to it results in the wrong timestamp being passed to the service.
///
/// Gets or sets the UnmodifiedSinceDate property.
///
///
/// The UnmodifiedSinceDate property.
///
[Obsolete("Setting this property results in non-UTC DateTimes not being marshalled correctly. " +
"Use UnmodifiedSinceDateUtc instead. Setting either UnmodifiedSinceDate or UnmodifiedSinceDateUtc results in both UnmodifiedSinceDate and " +
"UnmodifiedSinceDateUtc being assigned, the latest assignment to either one of the two property is " +
"reflected in the value of both. UnmodifiedSinceDate is provided for backwards compatibility only and " +
"assigning a non-Utc DateTime to it results in the wrong timestamp being passed to the service.", false)]
public DateTime UnmodifiedSinceDate
{
get { return this.unmodifiedSinceDate.GetValueOrDefault(); }
set
{
this.unmodifiedSinceDate = value;
this.unmodifiedSinceDateUtc = new DateTime(value.Ticks, DateTimeKind.Utc);
}
}
///
/// Gets or sets the UnmodifiedSinceDate property.
///
///
/// The UnmodifiedSinceDate property.
///
public DateTime UnmodifiedSinceDateUtc
{
get { return this.unmodifiedSinceDateUtc ?? default(DateTime); }
set
{
this.unmodifiedSinceDateUtc = value;
this.unmodifiedSinceDate = value;
}
}
// Check to see if UnmodifiedSinceDateUtc property is set
internal bool IsSetUnmodifiedSinceDateUtc()
{
return this.unmodifiedSinceDateUtc.HasValue;
}
///
/// The Server-side encryption algorithm to be used with the customer provided key.
///
///
public ServerSideEncryptionCustomerMethod ServerSideEncryptionCustomerMethod
{
get { return this.serverSideCustomerEncryption; }
set { this.serverSideCustomerEncryption = value; }
}
///
/// The base64-encoded encryption key for Amazon S3 to use to decrypt 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; }
}
///
/// 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; }
}
///
/// Gets and sets the property ChecksumMode.
///
/// This must be enabled to retrieve the checksum.
///
///
public ChecksumMode ChecksumMode
{
get { return this.checksumMode; }
set { this.checksumMode = value; }
}
}
}