/* * 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 HeadObject operation. /// The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you''re only /// interested in an object''s metadata. To use HEAD, you must have READ access to the object. /// public partial class GetObjectMetadataRequest : AmazonWebServiceRequest { private string bucketName; DateTime? modifiedSinceDate; DateTime? unmodifiedSinceDate; DateTime? modifiedSinceDateUtc; DateTime? unmodifiedSinceDateUtc; string etagToMatch; string etagToNotMatch; private string key; private string versionId; private int? partNumber; private RequestPayer requestPayer; private ServerSideEncryptionCustomerMethod serverSideCustomerEncryption; private string serverSideEncryptionCustomerProvidedKey; private string serverSideEncryptionCustomerProvidedKeyMD5; /// /// The name of the bucket that contains the object. /// public string BucketName { get { return this.bucketName; } set { this.bucketName = value; } } // Check to see if BucketName property is set internal bool IsSetBucketName() { return this.bucketName != null; } /// /// ETag to be matched as a pre-condition for returning the object, /// otherwise a PreconditionFailed signal is returned. /// public string EtagToMatch { get { return this.etagToMatch; } set { this.etagToMatch = value; } } // Check to see if EtagToMatch property is set internal bool IsSetEtagToMatch() { return this.etagToMatch != null; } /// /// /// 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. /// /// Returns the object only if it has been modified since the specified time, /// otherwise returns a PreconditionFailed. /// [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); } } /// /// Returns the object only if it has been modified since the specified time, /// otherwise returns a PreconditionFailed. /// public DateTime ModifiedSinceDateUtc { get { return this.modifiedSinceDateUtc.GetValueOrDefault(); } set { this.modifiedSinceDateUtc = value; this.modifiedSinceDate = value; } } // Check to see if ModifiedSinceDateUtc property is set internal bool IsSetModifiedSinceDateUtc() { return this.modifiedSinceDateUtc.HasValue; } /// /// ETag that should not be matched as a pre-condition for returning the object, /// otherwise a PreconditionFailed signal is returned. /// public string EtagToNotMatch { get { return this.etagToNotMatch; } set { this.etagToNotMatch = value; } } // Check to see if EtagToNotMatch property is set internal bool IsSetEtagToNotMatch() { return this.etagToNotMatch != null; } /// /// /// 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. /// /// Returns the object only if it has not been modified since the specified time, /// otherwise returns a PreconditionFailed. /// [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); } } /// /// Returns the object only if it has not been modified since the specified time, /// otherwise returns a PreconditionFailed. /// public DateTime UnmodifiedSinceDateUtc { get { return this.unmodifiedSinceDateUtc ?? default(DateTime); } set { this.unmodifiedSinceDateUtc = value; this.unmodifiedSinceDate = value; } } // Check to see if IfUnmodifiedSinceUtc property is set internal bool IsSetUnmodifiedSinceDateUtc() { return this.unmodifiedSinceDateUtc.HasValue; } /// /// The key of the object. /// 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; } /// /// VersionId used to reference a specific version of the object. /// /// public string VersionId { get { return this.versionId; } set { this.versionId = value; } } // Check to see if VersionId property is set internal bool IsSetVersionId() { return this.versionId != null; } /// /// 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 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. /// /// 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); } /// /// Part number of the object being read. This is a positive integer between 1 and 10,000. /// Effectively performs a 'ranged' HEAD request for the part specified. /// Useful querying about the size of the part and the number of parts in this object. /// public int? PartNumber { get { return this.partNumber; } set { if (value.HasValue) { if (value < 1 || 10000 < value) { throw new ArgumentException("PartNumber must be a positve integer between 1 and 10,000."); } } this.partNumber = value; } } /// /// Check if PartNumber property is set. /// /// true if PartNumber property is set. internal bool IsSetPartNumber() { return this.partNumber.HasValue; } /// /// Confirms that the requester knows that she or he will be charged for the list objects 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; } } }