aws_sdk_s3/operation/head_object/
_head_object_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
5pub struct HeadObjectInput {
6    /// <p>The name of the bucket that contains the object.</p>
7    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket_name</i>.s3express-<i>az_id</i>.<i>region</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format <code> <i>bucket_base_name</i>--<i>az-id</i>--x-s3</code> (for example, <code> <i>DOC-EXAMPLE-BUCKET</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
8    /// <p><b>Access points</b> - When you use this action with an access point, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
9    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
10    /// </note>
11    /// <p><b>S3 on Outposts</b> - 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 <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. 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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
12    pub bucket: ::std::option::Option<::std::string::String>,
13    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified; otherwise, return a 412 (precondition failed) error.</p>
14    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
15    /// <ul>
16    /// <li>
17    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
18    /// <li>
19    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
20    /// </ul>
21    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
22    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
23    pub if_match: ::std::option::Option<::std::string::String>,
24    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a 304 (not modified) error.</p>
25    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
26    /// <ul>
27    /// <li>
28    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
29    /// <li>
30    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
31    /// </ul>
32    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
33    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
34    pub if_modified_since: ::std::option::Option<::aws_smithy_types::DateTime>,
35    /// <p>Return the object only if its entity tag (ETag) is different from the one specified; otherwise, return a 304 (not modified) error.</p>
36    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
37    /// <ul>
38    /// <li>
39    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
40    /// <li>
41    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
42    /// </ul>
43    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
44    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
45    pub if_none_match: ::std::option::Option<::std::string::String>,
46    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a 412 (precondition failed) error.</p>
47    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
48    /// <ul>
49    /// <li>
50    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
51    /// <li>
52    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
53    /// </ul>
54    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
55    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
56    pub if_unmodified_since: ::std::option::Option<::aws_smithy_types::DateTime>,
57    /// <p>The object key.</p>
58    pub key: ::std::option::Option<::std::string::String>,
59    /// <p>HeadObject returns only the metadata for an object. If the Range is satisfiable, only the <code>ContentLength</code> is affected in the response. If the Range is not satisfiable, S3 returns a <code>416 - Requested Range Not Satisfiable</code> error.</p>
60    pub range: ::std::option::Option<::std::string::String>,
61    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
62    pub response_cache_control: ::std::option::Option<::std::string::String>,
63    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
64    pub response_content_disposition: ::std::option::Option<::std::string::String>,
65    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
66    pub response_content_encoding: ::std::option::Option<::std::string::String>,
67    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
68    pub response_content_language: ::std::option::Option<::std::string::String>,
69    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
70    pub response_content_type: ::std::option::Option<::std::string::String>,
71    /// <p>Sets the <code>Expires</code> header of the response.</p>
72    pub response_expires: ::std::option::Option<::aws_smithy_types::DateTime>,
73    /// <p>Version ID used to reference a specific version of the object.</p><note>
74    /// <p>For directory buckets in this API operation, only the <code>null</code> value of the version ID is supported.</p>
75    /// </note>
76    pub version_id: ::std::option::Option<::std::string::String>,
77    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
78    /// <p>This functionality is not supported for directory buckets.</p>
79    /// </note>
80    pub sse_customer_algorithm: ::std::option::Option<::std::string::String>,
81    /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
82    /// <p>This functionality is not supported for directory buckets.</p>
83    /// </note>
84    pub sse_customer_key: ::std::option::Option<::std::string::String>,
85    /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
86    /// <p>This functionality is not supported for directory buckets.</p>
87    /// </note>
88    pub sse_customer_key_md5: ::std::option::Option<::std::string::String>,
89    /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
90    /// <p>This functionality is not supported for directory buckets.</p>
91    /// </note>
92    pub request_payer: ::std::option::Option<crate::types::RequestPayer>,
93    /// <p>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.</p>
94    pub part_number: ::std::option::Option<i32>,
95    /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
96    pub expected_bucket_owner: ::std::option::Option<::std::string::String>,
97    /// <p>To retrieve the checksum, this parameter must be enabled.</p>
98    /// <p>In addition, if you enable checksum mode and the object is uploaded with a <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html">checksum</a> and encrypted with an Key Management Service (KMS) key, you must have permission to use the <code>kms:Decrypt</code> action to retrieve the checksum.</p>
99    pub checksum_mode: ::std::option::Option<crate::types::ChecksumMode>,
100}
101impl HeadObjectInput {
102    /// <p>The name of the bucket that contains the object.</p>
103    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket_name</i>.s3express-<i>az_id</i>.<i>region</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format <code> <i>bucket_base_name</i>--<i>az-id</i>--x-s3</code> (for example, <code> <i>DOC-EXAMPLE-BUCKET</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
104    /// <p><b>Access points</b> - When you use this action with an access point, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
105    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
106    /// </note>
107    /// <p><b>S3 on Outposts</b> - 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 <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. 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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
108    pub fn bucket(&self) -> ::std::option::Option<&str> {
109        self.bucket.as_deref()
110    }
111    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified; otherwise, return a 412 (precondition failed) error.</p>
112    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
113    /// <ul>
114    /// <li>
115    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
116    /// <li>
117    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
118    /// </ul>
119    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
120    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
121    pub fn if_match(&self) -> ::std::option::Option<&str> {
122        self.if_match.as_deref()
123    }
124    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a 304 (not modified) error.</p>
125    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
126    /// <ul>
127    /// <li>
128    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
129    /// <li>
130    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
131    /// </ul>
132    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
133    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
134    pub fn if_modified_since(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
135        self.if_modified_since.as_ref()
136    }
137    /// <p>Return the object only if its entity tag (ETag) is different from the one specified; otherwise, return a 304 (not modified) error.</p>
138    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
139    /// <ul>
140    /// <li>
141    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
142    /// <li>
143    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
144    /// </ul>
145    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
146    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
147    pub fn if_none_match(&self) -> ::std::option::Option<&str> {
148        self.if_none_match.as_deref()
149    }
150    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a 412 (precondition failed) error.</p>
151    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
152    /// <ul>
153    /// <li>
154    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
155    /// <li>
156    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
157    /// </ul>
158    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
159    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
160    pub fn if_unmodified_since(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
161        self.if_unmodified_since.as_ref()
162    }
163    /// <p>The object key.</p>
164    pub fn key(&self) -> ::std::option::Option<&str> {
165        self.key.as_deref()
166    }
167    /// <p>HeadObject returns only the metadata for an object. If the Range is satisfiable, only the <code>ContentLength</code> is affected in the response. If the Range is not satisfiable, S3 returns a <code>416 - Requested Range Not Satisfiable</code> error.</p>
168    pub fn range(&self) -> ::std::option::Option<&str> {
169        self.range.as_deref()
170    }
171    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
172    pub fn response_cache_control(&self) -> ::std::option::Option<&str> {
173        self.response_cache_control.as_deref()
174    }
175    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
176    pub fn response_content_disposition(&self) -> ::std::option::Option<&str> {
177        self.response_content_disposition.as_deref()
178    }
179    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
180    pub fn response_content_encoding(&self) -> ::std::option::Option<&str> {
181        self.response_content_encoding.as_deref()
182    }
183    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
184    pub fn response_content_language(&self) -> ::std::option::Option<&str> {
185        self.response_content_language.as_deref()
186    }
187    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
188    pub fn response_content_type(&self) -> ::std::option::Option<&str> {
189        self.response_content_type.as_deref()
190    }
191    /// <p>Sets the <code>Expires</code> header of the response.</p>
192    pub fn response_expires(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
193        self.response_expires.as_ref()
194    }
195    /// <p>Version ID used to reference a specific version of the object.</p><note>
196    /// <p>For directory buckets in this API operation, only the <code>null</code> value of the version ID is supported.</p>
197    /// </note>
198    pub fn version_id(&self) -> ::std::option::Option<&str> {
199        self.version_id.as_deref()
200    }
201    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
202    /// <p>This functionality is not supported for directory buckets.</p>
203    /// </note>
204    pub fn sse_customer_algorithm(&self) -> ::std::option::Option<&str> {
205        self.sse_customer_algorithm.as_deref()
206    }
207    /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
208    /// <p>This functionality is not supported for directory buckets.</p>
209    /// </note>
210    pub fn sse_customer_key(&self) -> ::std::option::Option<&str> {
211        self.sse_customer_key.as_deref()
212    }
213    /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
214    /// <p>This functionality is not supported for directory buckets.</p>
215    /// </note>
216    pub fn sse_customer_key_md5(&self) -> ::std::option::Option<&str> {
217        self.sse_customer_key_md5.as_deref()
218    }
219    /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
220    /// <p>This functionality is not supported for directory buckets.</p>
221    /// </note>
222    pub fn request_payer(&self) -> ::std::option::Option<&crate::types::RequestPayer> {
223        self.request_payer.as_ref()
224    }
225    /// <p>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.</p>
226    pub fn part_number(&self) -> ::std::option::Option<i32> {
227        self.part_number
228    }
229    /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
230    pub fn expected_bucket_owner(&self) -> ::std::option::Option<&str> {
231        self.expected_bucket_owner.as_deref()
232    }
233    /// <p>To retrieve the checksum, this parameter must be enabled.</p>
234    /// <p>In addition, if you enable checksum mode and the object is uploaded with a <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html">checksum</a> and encrypted with an Key Management Service (KMS) key, you must have permission to use the <code>kms:Decrypt</code> action to retrieve the checksum.</p>
235    pub fn checksum_mode(&self) -> ::std::option::Option<&crate::types::ChecksumMode> {
236        self.checksum_mode.as_ref()
237    }
238}
239impl ::std::fmt::Debug for HeadObjectInput {
240    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
241        let mut formatter = f.debug_struct("HeadObjectInput");
242        formatter.field("bucket", &self.bucket);
243        formatter.field("if_match", &self.if_match);
244        formatter.field("if_modified_since", &self.if_modified_since);
245        formatter.field("if_none_match", &self.if_none_match);
246        formatter.field("if_unmodified_since", &self.if_unmodified_since);
247        formatter.field("key", &self.key);
248        formatter.field("range", &self.range);
249        formatter.field("response_cache_control", &self.response_cache_control);
250        formatter.field("response_content_disposition", &self.response_content_disposition);
251        formatter.field("response_content_encoding", &self.response_content_encoding);
252        formatter.field("response_content_language", &self.response_content_language);
253        formatter.field("response_content_type", &self.response_content_type);
254        formatter.field("response_expires", &self.response_expires);
255        formatter.field("version_id", &self.version_id);
256        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
257        formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
258        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
259        formatter.field("request_payer", &self.request_payer);
260        formatter.field("part_number", &self.part_number);
261        formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
262        formatter.field("checksum_mode", &self.checksum_mode);
263        formatter.finish()
264    }
265}
266impl HeadObjectInput {
267    /// Creates a new builder-style object to manufacture [`HeadObjectInput`](crate::operation::head_object::HeadObjectInput).
268    pub fn builder() -> crate::operation::head_object::builders::HeadObjectInputBuilder {
269        crate::operation::head_object::builders::HeadObjectInputBuilder::default()
270    }
271}
272
273/// A builder for [`HeadObjectInput`](crate::operation::head_object::HeadObjectInput).
274#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
275#[non_exhaustive]
276pub struct HeadObjectInputBuilder {
277    pub(crate) bucket: ::std::option::Option<::std::string::String>,
278    pub(crate) if_match: ::std::option::Option<::std::string::String>,
279    pub(crate) if_modified_since: ::std::option::Option<::aws_smithy_types::DateTime>,
280    pub(crate) if_none_match: ::std::option::Option<::std::string::String>,
281    pub(crate) if_unmodified_since: ::std::option::Option<::aws_smithy_types::DateTime>,
282    pub(crate) key: ::std::option::Option<::std::string::String>,
283    pub(crate) range: ::std::option::Option<::std::string::String>,
284    pub(crate) response_cache_control: ::std::option::Option<::std::string::String>,
285    pub(crate) response_content_disposition: ::std::option::Option<::std::string::String>,
286    pub(crate) response_content_encoding: ::std::option::Option<::std::string::String>,
287    pub(crate) response_content_language: ::std::option::Option<::std::string::String>,
288    pub(crate) response_content_type: ::std::option::Option<::std::string::String>,
289    pub(crate) response_expires: ::std::option::Option<::aws_smithy_types::DateTime>,
290    pub(crate) version_id: ::std::option::Option<::std::string::String>,
291    pub(crate) sse_customer_algorithm: ::std::option::Option<::std::string::String>,
292    pub(crate) sse_customer_key: ::std::option::Option<::std::string::String>,
293    pub(crate) sse_customer_key_md5: ::std::option::Option<::std::string::String>,
294    pub(crate) request_payer: ::std::option::Option<crate::types::RequestPayer>,
295    pub(crate) part_number: ::std::option::Option<i32>,
296    pub(crate) expected_bucket_owner: ::std::option::Option<::std::string::String>,
297    pub(crate) checksum_mode: ::std::option::Option<crate::types::ChecksumMode>,
298}
299impl HeadObjectInputBuilder {
300    /// <p>The name of the bucket that contains the object.</p>
301    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket_name</i>.s3express-<i>az_id</i>.<i>region</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format <code> <i>bucket_base_name</i>--<i>az-id</i>--x-s3</code> (for example, <code> <i>DOC-EXAMPLE-BUCKET</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
302    /// <p><b>Access points</b> - When you use this action with an access point, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
303    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
304    /// </note>
305    /// <p><b>S3 on Outposts</b> - 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 <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. 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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
306    /// This field is required.
307    pub fn bucket(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
308        self.bucket = ::std::option::Option::Some(input.into());
309        self
310    }
311    /// <p>The name of the bucket that contains the object.</p>
312    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket_name</i>.s3express-<i>az_id</i>.<i>region</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format <code> <i>bucket_base_name</i>--<i>az-id</i>--x-s3</code> (for example, <code> <i>DOC-EXAMPLE-BUCKET</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
313    /// <p><b>Access points</b> - When you use this action with an access point, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
314    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
315    /// </note>
316    /// <p><b>S3 on Outposts</b> - 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 <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. 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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
317    pub fn set_bucket(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
318        self.bucket = input;
319        self
320    }
321    /// <p>The name of the bucket that contains the object.</p>
322    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket_name</i>.s3express-<i>az_id</i>.<i>region</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format <code> <i>bucket_base_name</i>--<i>az-id</i>--x-s3</code> (for example, <code> <i>DOC-EXAMPLE-BUCKET</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
323    /// <p><b>Access points</b> - When you use this action with an access point, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
324    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
325    /// </note>
326    /// <p><b>S3 on Outposts</b> - 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 <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. 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 <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
327    pub fn get_bucket(&self) -> &::std::option::Option<::std::string::String> {
328        &self.bucket
329    }
330    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified; otherwise, return a 412 (precondition failed) error.</p>
331    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
332    /// <ul>
333    /// <li>
334    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
335    /// <li>
336    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
337    /// </ul>
338    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
339    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
340    pub fn if_match(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
341        self.if_match = ::std::option::Option::Some(input.into());
342        self
343    }
344    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified; otherwise, return a 412 (precondition failed) error.</p>
345    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
346    /// <ul>
347    /// <li>
348    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
349    /// <li>
350    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
351    /// </ul>
352    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
353    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
354    pub fn set_if_match(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
355        self.if_match = input;
356        self
357    }
358    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified; otherwise, return a 412 (precondition failed) error.</p>
359    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
360    /// <ul>
361    /// <li>
362    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
363    /// <li>
364    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
365    /// </ul>
366    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
367    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
368    pub fn get_if_match(&self) -> &::std::option::Option<::std::string::String> {
369        &self.if_match
370    }
371    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a 304 (not modified) error.</p>
372    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
373    /// <ul>
374    /// <li>
375    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
376    /// <li>
377    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
378    /// </ul>
379    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
380    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
381    pub fn if_modified_since(mut self, input: ::aws_smithy_types::DateTime) -> Self {
382        self.if_modified_since = ::std::option::Option::Some(input);
383        self
384    }
385    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a 304 (not modified) error.</p>
386    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
387    /// <ul>
388    /// <li>
389    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
390    /// <li>
391    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
392    /// </ul>
393    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
394    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
395    pub fn set_if_modified_since(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
396        self.if_modified_since = input;
397        self
398    }
399    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a 304 (not modified) error.</p>
400    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
401    /// <ul>
402    /// <li>
403    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
404    /// <li>
405    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
406    /// </ul>
407    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
408    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
409    pub fn get_if_modified_since(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
410        &self.if_modified_since
411    }
412    /// <p>Return the object only if its entity tag (ETag) is different from the one specified; otherwise, return a 304 (not modified) error.</p>
413    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
414    /// <ul>
415    /// <li>
416    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
417    /// <li>
418    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
419    /// </ul>
420    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
421    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
422    pub fn if_none_match(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
423        self.if_none_match = ::std::option::Option::Some(input.into());
424        self
425    }
426    /// <p>Return the object only if its entity tag (ETag) is different from the one specified; otherwise, return a 304 (not modified) error.</p>
427    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
428    /// <ul>
429    /// <li>
430    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
431    /// <li>
432    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
433    /// </ul>
434    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
435    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
436    pub fn set_if_none_match(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
437        self.if_none_match = input;
438        self
439    }
440    /// <p>Return the object only if its entity tag (ETag) is different from the one specified; otherwise, return a 304 (not modified) error.</p>
441    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:</p>
442    /// <ul>
443    /// <li>
444    /// <p><code>If-None-Match</code> condition evaluates to <code>false</code>, and;</p></li>
445    /// <li>
446    /// <p><code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p></li>
447    /// </ul>
448    /// <p>Then Amazon S3 returns the <code>304 Not Modified</code> response code.</p>
449    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
450    pub fn get_if_none_match(&self) -> &::std::option::Option<::std::string::String> {
451        &self.if_none_match
452    }
453    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a 412 (precondition failed) error.</p>
454    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
455    /// <ul>
456    /// <li>
457    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
458    /// <li>
459    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
460    /// </ul>
461    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
462    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
463    pub fn if_unmodified_since(mut self, input: ::aws_smithy_types::DateTime) -> Self {
464        self.if_unmodified_since = ::std::option::Option::Some(input);
465        self
466    }
467    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a 412 (precondition failed) error.</p>
468    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
469    /// <ul>
470    /// <li>
471    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
472    /// <li>
473    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
474    /// </ul>
475    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
476    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
477    pub fn set_if_unmodified_since(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
478        self.if_unmodified_since = input;
479        self
480    }
481    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a 412 (precondition failed) error.</p>
482    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows:</p>
483    /// <ul>
484    /// <li>
485    /// <p><code>If-Match</code> condition evaluates to <code>true</code>, and;</p></li>
486    /// <li>
487    /// <p><code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p></li>
488    /// </ul>
489    /// <p>Then Amazon S3 returns <code>200 OK</code> and the data requested.</p>
490    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
491    pub fn get_if_unmodified_since(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
492        &self.if_unmodified_since
493    }
494    /// <p>The object key.</p>
495    /// This field is required.
496    pub fn key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
497        self.key = ::std::option::Option::Some(input.into());
498        self
499    }
500    /// <p>The object key.</p>
501    pub fn set_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
502        self.key = input;
503        self
504    }
505    /// <p>The object key.</p>
506    pub fn get_key(&self) -> &::std::option::Option<::std::string::String> {
507        &self.key
508    }
509    /// <p>HeadObject returns only the metadata for an object. If the Range is satisfiable, only the <code>ContentLength</code> is affected in the response. If the Range is not satisfiable, S3 returns a <code>416 - Requested Range Not Satisfiable</code> error.</p>
510    pub fn range(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
511        self.range = ::std::option::Option::Some(input.into());
512        self
513    }
514    /// <p>HeadObject returns only the metadata for an object. If the Range is satisfiable, only the <code>ContentLength</code> is affected in the response. If the Range is not satisfiable, S3 returns a <code>416 - Requested Range Not Satisfiable</code> error.</p>
515    pub fn set_range(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
516        self.range = input;
517        self
518    }
519    /// <p>HeadObject returns only the metadata for an object. If the Range is satisfiable, only the <code>ContentLength</code> is affected in the response. If the Range is not satisfiable, S3 returns a <code>416 - Requested Range Not Satisfiable</code> error.</p>
520    pub fn get_range(&self) -> &::std::option::Option<::std::string::String> {
521        &self.range
522    }
523    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
524    pub fn response_cache_control(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
525        self.response_cache_control = ::std::option::Option::Some(input.into());
526        self
527    }
528    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
529    pub fn set_response_cache_control(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
530        self.response_cache_control = input;
531        self
532    }
533    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
534    pub fn get_response_cache_control(&self) -> &::std::option::Option<::std::string::String> {
535        &self.response_cache_control
536    }
537    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
538    pub fn response_content_disposition(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
539        self.response_content_disposition = ::std::option::Option::Some(input.into());
540        self
541    }
542    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
543    pub fn set_response_content_disposition(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
544        self.response_content_disposition = input;
545        self
546    }
547    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
548    pub fn get_response_content_disposition(&self) -> &::std::option::Option<::std::string::String> {
549        &self.response_content_disposition
550    }
551    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
552    pub fn response_content_encoding(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
553        self.response_content_encoding = ::std::option::Option::Some(input.into());
554        self
555    }
556    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
557    pub fn set_response_content_encoding(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
558        self.response_content_encoding = input;
559        self
560    }
561    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
562    pub fn get_response_content_encoding(&self) -> &::std::option::Option<::std::string::String> {
563        &self.response_content_encoding
564    }
565    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
566    pub fn response_content_language(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
567        self.response_content_language = ::std::option::Option::Some(input.into());
568        self
569    }
570    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
571    pub fn set_response_content_language(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
572        self.response_content_language = input;
573        self
574    }
575    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
576    pub fn get_response_content_language(&self) -> &::std::option::Option<::std::string::String> {
577        &self.response_content_language
578    }
579    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
580    pub fn response_content_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
581        self.response_content_type = ::std::option::Option::Some(input.into());
582        self
583    }
584    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
585    pub fn set_response_content_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
586        self.response_content_type = input;
587        self
588    }
589    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
590    pub fn get_response_content_type(&self) -> &::std::option::Option<::std::string::String> {
591        &self.response_content_type
592    }
593    /// <p>Sets the <code>Expires</code> header of the response.</p>
594    pub fn response_expires(mut self, input: ::aws_smithy_types::DateTime) -> Self {
595        self.response_expires = ::std::option::Option::Some(input);
596        self
597    }
598    /// <p>Sets the <code>Expires</code> header of the response.</p>
599    pub fn set_response_expires(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
600        self.response_expires = input;
601        self
602    }
603    /// <p>Sets the <code>Expires</code> header of the response.</p>
604    pub fn get_response_expires(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
605        &self.response_expires
606    }
607    /// <p>Version ID used to reference a specific version of the object.</p><note>
608    /// <p>For directory buckets in this API operation, only the <code>null</code> value of the version ID is supported.</p>
609    /// </note>
610    pub fn version_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
611        self.version_id = ::std::option::Option::Some(input.into());
612        self
613    }
614    /// <p>Version ID used to reference a specific version of the object.</p><note>
615    /// <p>For directory buckets in this API operation, only the <code>null</code> value of the version ID is supported.</p>
616    /// </note>
617    pub fn set_version_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
618        self.version_id = input;
619        self
620    }
621    /// <p>Version ID used to reference a specific version of the object.</p><note>
622    /// <p>For directory buckets in this API operation, only the <code>null</code> value of the version ID is supported.</p>
623    /// </note>
624    pub fn get_version_id(&self) -> &::std::option::Option<::std::string::String> {
625        &self.version_id
626    }
627    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
628    /// <p>This functionality is not supported for directory buckets.</p>
629    /// </note>
630    pub fn sse_customer_algorithm(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
631        self.sse_customer_algorithm = ::std::option::Option::Some(input.into());
632        self
633    }
634    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
635    /// <p>This functionality is not supported for directory buckets.</p>
636    /// </note>
637    pub fn set_sse_customer_algorithm(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
638        self.sse_customer_algorithm = input;
639        self
640    }
641    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
642    /// <p>This functionality is not supported for directory buckets.</p>
643    /// </note>
644    pub fn get_sse_customer_algorithm(&self) -> &::std::option::Option<::std::string::String> {
645        &self.sse_customer_algorithm
646    }
647    /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
648    /// <p>This functionality is not supported for directory buckets.</p>
649    /// </note>
650    pub fn sse_customer_key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
651        self.sse_customer_key = ::std::option::Option::Some(input.into());
652        self
653    }
654    /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
655    /// <p>This functionality is not supported for directory buckets.</p>
656    /// </note>
657    pub fn set_sse_customer_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
658        self.sse_customer_key = input;
659        self
660    }
661    /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
662    /// <p>This functionality is not supported for directory buckets.</p>
663    /// </note>
664    pub fn get_sse_customer_key(&self) -> &::std::option::Option<::std::string::String> {
665        &self.sse_customer_key
666    }
667    /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
668    /// <p>This functionality is not supported for directory buckets.</p>
669    /// </note>
670    pub fn sse_customer_key_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
671        self.sse_customer_key_md5 = ::std::option::Option::Some(input.into());
672        self
673    }
674    /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
675    /// <p>This functionality is not supported for directory buckets.</p>
676    /// </note>
677    pub fn set_sse_customer_key_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
678        self.sse_customer_key_md5 = input;
679        self
680    }
681    /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
682    /// <p>This functionality is not supported for directory buckets.</p>
683    /// </note>
684    pub fn get_sse_customer_key_md5(&self) -> &::std::option::Option<::std::string::String> {
685        &self.sse_customer_key_md5
686    }
687    /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
688    /// <p>This functionality is not supported for directory buckets.</p>
689    /// </note>
690    pub fn request_payer(mut self, input: crate::types::RequestPayer) -> Self {
691        self.request_payer = ::std::option::Option::Some(input);
692        self
693    }
694    /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
695    /// <p>This functionality is not supported for directory buckets.</p>
696    /// </note>
697    pub fn set_request_payer(mut self, input: ::std::option::Option<crate::types::RequestPayer>) -> Self {
698        self.request_payer = input;
699        self
700    }
701    /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
702    /// <p>This functionality is not supported for directory buckets.</p>
703    /// </note>
704    pub fn get_request_payer(&self) -> &::std::option::Option<crate::types::RequestPayer> {
705        &self.request_payer
706    }
707    /// <p>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.</p>
708    pub fn part_number(mut self, input: i32) -> Self {
709        self.part_number = ::std::option::Option::Some(input);
710        self
711    }
712    /// <p>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.</p>
713    pub fn set_part_number(mut self, input: ::std::option::Option<i32>) -> Self {
714        self.part_number = input;
715        self
716    }
717    /// <p>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.</p>
718    pub fn get_part_number(&self) -> &::std::option::Option<i32> {
719        &self.part_number
720    }
721    /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
722    pub fn expected_bucket_owner(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
723        self.expected_bucket_owner = ::std::option::Option::Some(input.into());
724        self
725    }
726    /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
727    pub fn set_expected_bucket_owner(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
728        self.expected_bucket_owner = input;
729        self
730    }
731    /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
732    pub fn get_expected_bucket_owner(&self) -> &::std::option::Option<::std::string::String> {
733        &self.expected_bucket_owner
734    }
735    /// <p>To retrieve the checksum, this parameter must be enabled.</p>
736    /// <p>In addition, if you enable checksum mode and the object is uploaded with a <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html">checksum</a> and encrypted with an Key Management Service (KMS) key, you must have permission to use the <code>kms:Decrypt</code> action to retrieve the checksum.</p>
737    pub fn checksum_mode(mut self, input: crate::types::ChecksumMode) -> Self {
738        self.checksum_mode = ::std::option::Option::Some(input);
739        self
740    }
741    /// <p>To retrieve the checksum, this parameter must be enabled.</p>
742    /// <p>In addition, if you enable checksum mode and the object is uploaded with a <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html">checksum</a> and encrypted with an Key Management Service (KMS) key, you must have permission to use the <code>kms:Decrypt</code> action to retrieve the checksum.</p>
743    pub fn set_checksum_mode(mut self, input: ::std::option::Option<crate::types::ChecksumMode>) -> Self {
744        self.checksum_mode = input;
745        self
746    }
747    /// <p>To retrieve the checksum, this parameter must be enabled.</p>
748    /// <p>In addition, if you enable checksum mode and the object is uploaded with a <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html">checksum</a> and encrypted with an Key Management Service (KMS) key, you must have permission to use the <code>kms:Decrypt</code> action to retrieve the checksum.</p>
749    pub fn get_checksum_mode(&self) -> &::std::option::Option<crate::types::ChecksumMode> {
750        &self.checksum_mode
751    }
752    /// Consumes the builder and constructs a [`HeadObjectInput`](crate::operation::head_object::HeadObjectInput).
753    pub fn build(self) -> ::std::result::Result<crate::operation::head_object::HeadObjectInput, ::aws_smithy_types::error::operation::BuildError> {
754        ::std::result::Result::Ok(crate::operation::head_object::HeadObjectInput {
755            bucket: self.bucket,
756            if_match: self.if_match,
757            if_modified_since: self.if_modified_since,
758            if_none_match: self.if_none_match,
759            if_unmodified_since: self.if_unmodified_since,
760            key: self.key,
761            range: self.range,
762            response_cache_control: self.response_cache_control,
763            response_content_disposition: self.response_content_disposition,
764            response_content_encoding: self.response_content_encoding,
765            response_content_language: self.response_content_language,
766            response_content_type: self.response_content_type,
767            response_expires: self.response_expires,
768            version_id: self.version_id,
769            sse_customer_algorithm: self.sse_customer_algorithm,
770            sse_customer_key: self.sse_customer_key,
771            sse_customer_key_md5: self.sse_customer_key_md5,
772            request_payer: self.request_payer,
773            part_number: self.part_number,
774            expected_bucket_owner: self.expected_bucket_owner,
775            checksum_mode: self.checksum_mode,
776        })
777    }
778}
779impl ::std::fmt::Debug for HeadObjectInputBuilder {
780    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
781        let mut formatter = f.debug_struct("HeadObjectInputBuilder");
782        formatter.field("bucket", &self.bucket);
783        formatter.field("if_match", &self.if_match);
784        formatter.field("if_modified_since", &self.if_modified_since);
785        formatter.field("if_none_match", &self.if_none_match);
786        formatter.field("if_unmodified_since", &self.if_unmodified_since);
787        formatter.field("key", &self.key);
788        formatter.field("range", &self.range);
789        formatter.field("response_cache_control", &self.response_cache_control);
790        formatter.field("response_content_disposition", &self.response_content_disposition);
791        formatter.field("response_content_encoding", &self.response_content_encoding);
792        formatter.field("response_content_language", &self.response_content_language);
793        formatter.field("response_content_type", &self.response_content_type);
794        formatter.field("response_expires", &self.response_expires);
795        formatter.field("version_id", &self.version_id);
796        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
797        formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
798        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
799        formatter.field("request_payer", &self.request_payer);
800        formatter.field("part_number", &self.part_number);
801        formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
802        formatter.field("checksum_mode", &self.checksum_mode);
803        formatter.finish()
804    }
805}