aws_sdk_s3/operation/head_object/
_head_object_output.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 HeadObjectOutput {
6    /// <p>Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response.</p><note>
7    /// <p>This functionality is not supported for directory buckets.</p>
8    /// </note>
9    pub delete_marker: ::std::option::Option<bool>,
10    /// <p>Indicates that a range of bytes was specified.</p>
11    pub accept_ranges: ::std::option::Option<::std::string::String>,
12    /// <p>If the object expiration is configured (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html"> <code>PutBucketLifecycleConfiguration</code> </a>), the response includes this header. It includes the <code>expiry-date</code> and <code>rule-id</code> key-value pairs providing object expiration information. The value of the <code>rule-id</code> is URL-encoded.</p><note>
13    /// <p>Object expiration information is not returned in directory buckets and this header returns the value "<code>NotImplemented</code>" in all responses for directory buckets.</p>
14    /// </note>
15    pub expiration: ::std::option::Option<::std::string::String>,
16    /// <p>If the object is an archived object (an object whose storage class is GLACIER), the response includes this header if either the archive restoration is in progress (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a> or an archive copy is already restored.</p>
17    /// <p>If an archive copy is already restored, the header value indicates when Amazon S3 is scheduled to delete the object copy. For example:</p>
18    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
19    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
20    /// <p>For more information about archiving objects, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning Objects: General Considerations</a>.</p><note>
21    /// <p>This functionality is not supported for directory buckets. Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
22    /// </note>
23    pub restore: ::std::option::Option<::std::string::String>,
24    /// <p>The archive state of the head object.</p><note>
25    /// <p>This functionality is not supported for directory buckets.</p>
26    /// </note>
27    pub archive_status: ::std::option::Option<crate::types::ArchiveStatus>,
28    /// <p>Date and time when the object was last modified.</p>
29    pub last_modified: ::std::option::Option<::aws_smithy_types::DateTime>,
30    /// <p>Size of the body in bytes.</p>
31    pub content_length: ::std::option::Option<i64>,
32    /// <p>The Base64 encoded, 32-bit <code>CRC-32 checksum</code> of the object. This checksum is only be present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
33    pub checksum_crc32: ::std::option::Option<::std::string::String>,
34    /// <p>The Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. This checksum is only present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
35    pub checksum_crc32_c: ::std::option::Option<::std::string::String>,
36    /// <p>The Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
37    pub checksum_crc64_nvme: ::std::option::Option<::std::string::String>,
38    /// <p>The Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. This will only be present if the object was uploaded with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
39    pub checksum_sha1: ::std::option::Option<::std::string::String>,
40    /// <p>The Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. This will only be present if the object was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
41    pub checksum_sha256: ::std::option::Option<::std::string::String>,
42    /// <p>The checksum type, which determines how part-level checksums are combined to create an object-level checksum for multipart objects. You can use this header response to verify that the checksum type that is received is the same checksum type that was specified in <code>CreateMultipartUpload</code> request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
43    pub checksum_type: ::std::option::Option<crate::types::ChecksumType>,
44    /// <p>An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.</p>
45    pub e_tag: ::std::option::Option<::std::string::String>,
46    /// <p>This is set to the number of metadata entries not returned in <code>x-amz-meta</code> headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers.</p><note>
47    /// <p>This functionality is not supported for directory buckets.</p>
48    /// </note>
49    pub missing_meta: ::std::option::Option<i32>,
50    /// <p>Version ID of the object.</p><note>
51    /// <p>This functionality is not supported for directory buckets.</p>
52    /// </note>
53    pub version_id: ::std::option::Option<::std::string::String>,
54    /// <p>Specifies caching behavior along the request/reply chain.</p>
55    pub cache_control: ::std::option::Option<::std::string::String>,
56    /// <p>Specifies presentational information for the object.</p>
57    pub content_disposition: ::std::option::Option<::std::string::String>,
58    /// <p>Indicates what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.</p>
59    pub content_encoding: ::std::option::Option<::std::string::String>,
60    /// <p>The language the content is in.</p>
61    pub content_language: ::std::option::Option<::std::string::String>,
62    /// <p>A standard MIME type describing the format of the object data.</p>
63    pub content_type: ::std::option::Option<::std::string::String>,
64    /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata.</p><note>
65    /// <p>This functionality is not supported for directory buckets.</p>
66    /// </note>
67    pub website_redirect_location: ::std::option::Option<::std::string::String>,
68    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
69    pub server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
70    /// <p>A map of metadata to store with the object in S3.</p>
71    pub metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
72    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to confirm the encryption algorithm that's used.</p><note>
73    /// <p>This functionality is not supported for directory buckets.</p>
74    /// </note>
75    pub sse_customer_algorithm: ::std::option::Option<::std::string::String>,
76    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide the round-trip message integrity verification of the customer-provided encryption key.</p><note>
77    /// <p>This functionality is not supported for directory buckets.</p>
78    /// </note>
79    pub sse_customer_key_md5: ::std::option::Option<::std::string::String>,
80    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
81    pub ssekms_key_id: ::std::option::Option<::std::string::String>,
82    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
83    pub bucket_key_enabled: ::std::option::Option<bool>,
84    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
85    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
86    /// <p><b>Directory buckets </b> - Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
87    /// </note>
88    pub storage_class: ::std::option::Option<crate::types::StorageClass>,
89    /// <p>If present, indicates that the requester was successfully charged for the request.</p><note>
90    /// <p>This functionality is not supported for directory buckets.</p>
91    /// </note>
92    pub request_charged: ::std::option::Option<crate::types::RequestCharged>,
93    /// <p>Amazon S3 can return this header if your request involves a bucket that is either a source or a destination in a replication rule.</p>
94    /// <p>In replication, you have a source bucket on which you configure replication and destination bucket or buckets where Amazon S3 stores object replicas. When you request an object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>) from these buckets, Amazon S3 will return the <code>x-amz-replication-status</code> header in the response as follows:</p>
95    /// <ul>
96    /// <li>
97    /// <p><b>If requesting an object from the source bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header if the object in your request is eligible for replication.</p>
98    /// <p>For example, suppose that in your replication configuration, you specify object prefix <code>TaxDocs</code> requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>. Any objects you upload with this key name prefix, for example <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object request with this key name prefix, Amazon S3 will return the <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or FAILED indicating object replication status.</p></li>
99    /// <li>
100    /// <p><b>If requesting an object from a destination bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header with value REPLICA if the object in your request is a replica that Amazon S3 created and there is no replica modification replication in progress.</p></li>
101    /// <li>
102    /// <p><b>When replicating objects to multiple destination buckets</b>, the <code>x-amz-replication-status</code> header acts differently. The header of the source object will only return a value of COMPLETED when replication is successful to all destinations. The header will remain at value PENDING until replication has completed for all destinations. If one or more destinations fails replication the header will return FAILED.</p></li>
103    /// </ul>
104    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
105    /// <p>This functionality is not supported for directory buckets.</p>
106    /// </note>
107    pub replication_status: ::std::option::Option<crate::types::ReplicationStatus>,
108    /// <p>The count of parts this object has. This value is only returned if you specify <code>partNumber</code> in your request and the object was uploaded as a multipart upload.</p>
109    pub parts_count: ::std::option::Option<i32>,
110    /// <p>The Object Lock mode, if any, that's in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
111    /// <p>This functionality is not supported for directory buckets.</p>
112    /// </note>
113    pub object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
114    /// <p>The date and time when the Object Lock retention period expires. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
115    /// <p>This functionality is not supported for directory buckets.</p>
116    /// </note>
117    pub object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
118    /// <p>Specifies whether a legal hold is in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectLegalHold</code> permission. This header is not returned if the specified version of this object has never had a legal hold applied. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
119    /// <p>This functionality is not supported for directory buckets.</p>
120    /// </note>
121    pub object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
122    /// <p>The date and time at which the object is no longer cacheable.</p>
123    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
124    pub expires: ::std::option::Option<::aws_smithy_types::DateTime>,
125    /// <p>The date and time at which the object is no longer cacheable.</p>
126    pub expires_string: ::std::option::Option<::std::string::String>,
127    _extended_request_id: Option<String>,
128    _request_id: Option<String>,
129}
130impl HeadObjectOutput {
131    /// <p>Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response.</p><note>
132    /// <p>This functionality is not supported for directory buckets.</p>
133    /// </note>
134    pub fn delete_marker(&self) -> ::std::option::Option<bool> {
135        self.delete_marker
136    }
137    /// <p>Indicates that a range of bytes was specified.</p>
138    pub fn accept_ranges(&self) -> ::std::option::Option<&str> {
139        self.accept_ranges.as_deref()
140    }
141    /// <p>If the object expiration is configured (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html"> <code>PutBucketLifecycleConfiguration</code> </a>), the response includes this header. It includes the <code>expiry-date</code> and <code>rule-id</code> key-value pairs providing object expiration information. The value of the <code>rule-id</code> is URL-encoded.</p><note>
142    /// <p>Object expiration information is not returned in directory buckets and this header returns the value "<code>NotImplemented</code>" in all responses for directory buckets.</p>
143    /// </note>
144    pub fn expiration(&self) -> ::std::option::Option<&str> {
145        self.expiration.as_deref()
146    }
147    /// <p>If the object is an archived object (an object whose storage class is GLACIER), the response includes this header if either the archive restoration is in progress (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a> or an archive copy is already restored.</p>
148    /// <p>If an archive copy is already restored, the header value indicates when Amazon S3 is scheduled to delete the object copy. For example:</p>
149    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
150    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
151    /// <p>For more information about archiving objects, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning Objects: General Considerations</a>.</p><note>
152    /// <p>This functionality is not supported for directory buckets. Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
153    /// </note>
154    pub fn restore(&self) -> ::std::option::Option<&str> {
155        self.restore.as_deref()
156    }
157    /// <p>The archive state of the head object.</p><note>
158    /// <p>This functionality is not supported for directory buckets.</p>
159    /// </note>
160    pub fn archive_status(&self) -> ::std::option::Option<&crate::types::ArchiveStatus> {
161        self.archive_status.as_ref()
162    }
163    /// <p>Date and time when the object was last modified.</p>
164    pub fn last_modified(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
165        self.last_modified.as_ref()
166    }
167    /// <p>Size of the body in bytes.</p>
168    pub fn content_length(&self) -> ::std::option::Option<i64> {
169        self.content_length
170    }
171    /// <p>The Base64 encoded, 32-bit <code>CRC-32 checksum</code> of the object. This checksum is only be present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
172    pub fn checksum_crc32(&self) -> ::std::option::Option<&str> {
173        self.checksum_crc32.as_deref()
174    }
175    /// <p>The Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. This checksum is only present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
176    pub fn checksum_crc32_c(&self) -> ::std::option::Option<&str> {
177        self.checksum_crc32_c.as_deref()
178    }
179    /// <p>The Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
180    pub fn checksum_crc64_nvme(&self) -> ::std::option::Option<&str> {
181        self.checksum_crc64_nvme.as_deref()
182    }
183    /// <p>The Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. This will only be present if the object was uploaded with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
184    pub fn checksum_sha1(&self) -> ::std::option::Option<&str> {
185        self.checksum_sha1.as_deref()
186    }
187    /// <p>The Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. This will only be present if the object was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
188    pub fn checksum_sha256(&self) -> ::std::option::Option<&str> {
189        self.checksum_sha256.as_deref()
190    }
191    /// <p>The checksum type, which determines how part-level checksums are combined to create an object-level checksum for multipart objects. You can use this header response to verify that the checksum type that is received is the same checksum type that was specified in <code>CreateMultipartUpload</code> request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
192    pub fn checksum_type(&self) -> ::std::option::Option<&crate::types::ChecksumType> {
193        self.checksum_type.as_ref()
194    }
195    /// <p>An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.</p>
196    pub fn e_tag(&self) -> ::std::option::Option<&str> {
197        self.e_tag.as_deref()
198    }
199    /// <p>This is set to the number of metadata entries not returned in <code>x-amz-meta</code> headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers.</p><note>
200    /// <p>This functionality is not supported for directory buckets.</p>
201    /// </note>
202    pub fn missing_meta(&self) -> ::std::option::Option<i32> {
203        self.missing_meta
204    }
205    /// <p>Version ID of the object.</p><note>
206    /// <p>This functionality is not supported for directory buckets.</p>
207    /// </note>
208    pub fn version_id(&self) -> ::std::option::Option<&str> {
209        self.version_id.as_deref()
210    }
211    /// <p>Specifies caching behavior along the request/reply chain.</p>
212    pub fn cache_control(&self) -> ::std::option::Option<&str> {
213        self.cache_control.as_deref()
214    }
215    /// <p>Specifies presentational information for the object.</p>
216    pub fn content_disposition(&self) -> ::std::option::Option<&str> {
217        self.content_disposition.as_deref()
218    }
219    /// <p>Indicates what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.</p>
220    pub fn content_encoding(&self) -> ::std::option::Option<&str> {
221        self.content_encoding.as_deref()
222    }
223    /// <p>The language the content is in.</p>
224    pub fn content_language(&self) -> ::std::option::Option<&str> {
225        self.content_language.as_deref()
226    }
227    /// <p>A standard MIME type describing the format of the object data.</p>
228    pub fn content_type(&self) -> ::std::option::Option<&str> {
229        self.content_type.as_deref()
230    }
231    /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata.</p><note>
232    /// <p>This functionality is not supported for directory buckets.</p>
233    /// </note>
234    pub fn website_redirect_location(&self) -> ::std::option::Option<&str> {
235        self.website_redirect_location.as_deref()
236    }
237    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
238    pub fn server_side_encryption(&self) -> ::std::option::Option<&crate::types::ServerSideEncryption> {
239        self.server_side_encryption.as_ref()
240    }
241    /// <p>A map of metadata to store with the object in S3.</p>
242    pub fn metadata(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
243        self.metadata.as_ref()
244    }
245    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to confirm the encryption algorithm that's used.</p><note>
246    /// <p>This functionality is not supported for directory buckets.</p>
247    /// </note>
248    pub fn sse_customer_algorithm(&self) -> ::std::option::Option<&str> {
249        self.sse_customer_algorithm.as_deref()
250    }
251    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide the round-trip message integrity verification of the customer-provided encryption key.</p><note>
252    /// <p>This functionality is not supported for directory buckets.</p>
253    /// </note>
254    pub fn sse_customer_key_md5(&self) -> ::std::option::Option<&str> {
255        self.sse_customer_key_md5.as_deref()
256    }
257    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
258    pub fn ssekms_key_id(&self) -> ::std::option::Option<&str> {
259        self.ssekms_key_id.as_deref()
260    }
261    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
262    pub fn bucket_key_enabled(&self) -> ::std::option::Option<bool> {
263        self.bucket_key_enabled
264    }
265    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
266    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
267    /// <p><b>Directory buckets </b> - Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
268    /// </note>
269    pub fn storage_class(&self) -> ::std::option::Option<&crate::types::StorageClass> {
270        self.storage_class.as_ref()
271    }
272    /// <p>If present, indicates that the requester was successfully charged for the request.</p><note>
273    /// <p>This functionality is not supported for directory buckets.</p>
274    /// </note>
275    pub fn request_charged(&self) -> ::std::option::Option<&crate::types::RequestCharged> {
276        self.request_charged.as_ref()
277    }
278    /// <p>Amazon S3 can return this header if your request involves a bucket that is either a source or a destination in a replication rule.</p>
279    /// <p>In replication, you have a source bucket on which you configure replication and destination bucket or buckets where Amazon S3 stores object replicas. When you request an object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>) from these buckets, Amazon S3 will return the <code>x-amz-replication-status</code> header in the response as follows:</p>
280    /// <ul>
281    /// <li>
282    /// <p><b>If requesting an object from the source bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header if the object in your request is eligible for replication.</p>
283    /// <p>For example, suppose that in your replication configuration, you specify object prefix <code>TaxDocs</code> requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>. Any objects you upload with this key name prefix, for example <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object request with this key name prefix, Amazon S3 will return the <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or FAILED indicating object replication status.</p></li>
284    /// <li>
285    /// <p><b>If requesting an object from a destination bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header with value REPLICA if the object in your request is a replica that Amazon S3 created and there is no replica modification replication in progress.</p></li>
286    /// <li>
287    /// <p><b>When replicating objects to multiple destination buckets</b>, the <code>x-amz-replication-status</code> header acts differently. The header of the source object will only return a value of COMPLETED when replication is successful to all destinations. The header will remain at value PENDING until replication has completed for all destinations. If one or more destinations fails replication the header will return FAILED.</p></li>
288    /// </ul>
289    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
290    /// <p>This functionality is not supported for directory buckets.</p>
291    /// </note>
292    pub fn replication_status(&self) -> ::std::option::Option<&crate::types::ReplicationStatus> {
293        self.replication_status.as_ref()
294    }
295    /// <p>The count of parts this object has. This value is only returned if you specify <code>partNumber</code> in your request and the object was uploaded as a multipart upload.</p>
296    pub fn parts_count(&self) -> ::std::option::Option<i32> {
297        self.parts_count
298    }
299    /// <p>The Object Lock mode, if any, that's in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
300    /// <p>This functionality is not supported for directory buckets.</p>
301    /// </note>
302    pub fn object_lock_mode(&self) -> ::std::option::Option<&crate::types::ObjectLockMode> {
303        self.object_lock_mode.as_ref()
304    }
305    /// <p>The date and time when the Object Lock retention period expires. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
306    /// <p>This functionality is not supported for directory buckets.</p>
307    /// </note>
308    pub fn object_lock_retain_until_date(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
309        self.object_lock_retain_until_date.as_ref()
310    }
311    /// <p>Specifies whether a legal hold is in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectLegalHold</code> permission. This header is not returned if the specified version of this object has never had a legal hold applied. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
312    /// <p>This functionality is not supported for directory buckets.</p>
313    /// </note>
314    pub fn object_lock_legal_hold_status(&self) -> ::std::option::Option<&crate::types::ObjectLockLegalHoldStatus> {
315        self.object_lock_legal_hold_status.as_ref()
316    }
317    /// <p>The date and time at which the object is no longer cacheable.</p>
318    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
319    pub fn expires(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
320        self.expires.as_ref()
321    }
322    /// <p>The date and time at which the object is no longer cacheable.</p>
323    pub fn expires_string(&self) -> ::std::option::Option<&str> {
324        self.expires_string.as_deref()
325    }
326}
327impl ::std::fmt::Debug for HeadObjectOutput {
328    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
329        let mut formatter = f.debug_struct("HeadObjectOutput");
330        formatter.field("delete_marker", &self.delete_marker);
331        formatter.field("accept_ranges", &self.accept_ranges);
332        formatter.field("expiration", &self.expiration);
333        formatter.field("restore", &self.restore);
334        formatter.field("archive_status", &self.archive_status);
335        formatter.field("last_modified", &self.last_modified);
336        formatter.field("content_length", &self.content_length);
337        formatter.field("checksum_crc32", &self.checksum_crc32);
338        formatter.field("checksum_crc32_c", &self.checksum_crc32_c);
339        formatter.field("checksum_crc64_nvme", &self.checksum_crc64_nvme);
340        formatter.field("checksum_sha1", &self.checksum_sha1);
341        formatter.field("checksum_sha256", &self.checksum_sha256);
342        formatter.field("checksum_type", &self.checksum_type);
343        formatter.field("e_tag", &self.e_tag);
344        formatter.field("missing_meta", &self.missing_meta);
345        formatter.field("version_id", &self.version_id);
346        formatter.field("cache_control", &self.cache_control);
347        formatter.field("content_disposition", &self.content_disposition);
348        formatter.field("content_encoding", &self.content_encoding);
349        formatter.field("content_language", &self.content_language);
350        formatter.field("content_type", &self.content_type);
351        formatter.field("website_redirect_location", &self.website_redirect_location);
352        formatter.field("server_side_encryption", &self.server_side_encryption);
353        formatter.field("metadata", &self.metadata);
354        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
355        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
356        formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
357        formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
358        formatter.field("storage_class", &self.storage_class);
359        formatter.field("request_charged", &self.request_charged);
360        formatter.field("replication_status", &self.replication_status);
361        formatter.field("parts_count", &self.parts_count);
362        formatter.field("object_lock_mode", &self.object_lock_mode);
363        formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
364        formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
365        formatter.field("expires", &self.expires);
366        formatter.field("expires_string", &self.expires_string);
367        formatter.field("_extended_request_id", &self._extended_request_id);
368        formatter.field("_request_id", &self._request_id);
369        formatter.finish()
370    }
371}
372impl crate::s3_request_id::RequestIdExt for HeadObjectOutput {
373    fn extended_request_id(&self) -> Option<&str> {
374        self._extended_request_id.as_deref()
375    }
376}
377impl ::aws_types::request_id::RequestId for HeadObjectOutput {
378    fn request_id(&self) -> Option<&str> {
379        self._request_id.as_deref()
380    }
381}
382impl HeadObjectOutput {
383    /// Creates a new builder-style object to manufacture [`HeadObjectOutput`](crate::operation::head_object::HeadObjectOutput).
384    pub fn builder() -> crate::operation::head_object::builders::HeadObjectOutputBuilder {
385        crate::operation::head_object::builders::HeadObjectOutputBuilder::default()
386    }
387}
388
389/// A builder for [`HeadObjectOutput`](crate::operation::head_object::HeadObjectOutput).
390#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
391#[non_exhaustive]
392pub struct HeadObjectOutputBuilder {
393    pub(crate) delete_marker: ::std::option::Option<bool>,
394    pub(crate) accept_ranges: ::std::option::Option<::std::string::String>,
395    pub(crate) expiration: ::std::option::Option<::std::string::String>,
396    pub(crate) restore: ::std::option::Option<::std::string::String>,
397    pub(crate) archive_status: ::std::option::Option<crate::types::ArchiveStatus>,
398    pub(crate) last_modified: ::std::option::Option<::aws_smithy_types::DateTime>,
399    pub(crate) content_length: ::std::option::Option<i64>,
400    pub(crate) checksum_crc32: ::std::option::Option<::std::string::String>,
401    pub(crate) checksum_crc32_c: ::std::option::Option<::std::string::String>,
402    pub(crate) checksum_crc64_nvme: ::std::option::Option<::std::string::String>,
403    pub(crate) checksum_sha1: ::std::option::Option<::std::string::String>,
404    pub(crate) checksum_sha256: ::std::option::Option<::std::string::String>,
405    pub(crate) checksum_type: ::std::option::Option<crate::types::ChecksumType>,
406    pub(crate) e_tag: ::std::option::Option<::std::string::String>,
407    pub(crate) missing_meta: ::std::option::Option<i32>,
408    pub(crate) version_id: ::std::option::Option<::std::string::String>,
409    pub(crate) cache_control: ::std::option::Option<::std::string::String>,
410    pub(crate) content_disposition: ::std::option::Option<::std::string::String>,
411    pub(crate) content_encoding: ::std::option::Option<::std::string::String>,
412    pub(crate) content_language: ::std::option::Option<::std::string::String>,
413    pub(crate) content_type: ::std::option::Option<::std::string::String>,
414    pub(crate) website_redirect_location: ::std::option::Option<::std::string::String>,
415    pub(crate) server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
416    pub(crate) metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
417    pub(crate) sse_customer_algorithm: ::std::option::Option<::std::string::String>,
418    pub(crate) sse_customer_key_md5: ::std::option::Option<::std::string::String>,
419    pub(crate) ssekms_key_id: ::std::option::Option<::std::string::String>,
420    pub(crate) bucket_key_enabled: ::std::option::Option<bool>,
421    pub(crate) storage_class: ::std::option::Option<crate::types::StorageClass>,
422    pub(crate) request_charged: ::std::option::Option<crate::types::RequestCharged>,
423    pub(crate) replication_status: ::std::option::Option<crate::types::ReplicationStatus>,
424    pub(crate) parts_count: ::std::option::Option<i32>,
425    pub(crate) object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
426    pub(crate) object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
427    pub(crate) object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
428    pub(crate) expires: ::std::option::Option<::aws_smithy_types::DateTime>,
429    pub(crate) expires_string: ::std::option::Option<::std::string::String>,
430    _extended_request_id: Option<String>,
431    _request_id: Option<String>,
432}
433impl HeadObjectOutputBuilder {
434    /// <p>Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response.</p><note>
435    /// <p>This functionality is not supported for directory buckets.</p>
436    /// </note>
437    pub fn delete_marker(mut self, input: bool) -> Self {
438        self.delete_marker = ::std::option::Option::Some(input);
439        self
440    }
441    /// <p>Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response.</p><note>
442    /// <p>This functionality is not supported for directory buckets.</p>
443    /// </note>
444    pub fn set_delete_marker(mut self, input: ::std::option::Option<bool>) -> Self {
445        self.delete_marker = input;
446        self
447    }
448    /// <p>Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response.</p><note>
449    /// <p>This functionality is not supported for directory buckets.</p>
450    /// </note>
451    pub fn get_delete_marker(&self) -> &::std::option::Option<bool> {
452        &self.delete_marker
453    }
454    /// <p>Indicates that a range of bytes was specified.</p>
455    pub fn accept_ranges(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
456        self.accept_ranges = ::std::option::Option::Some(input.into());
457        self
458    }
459    /// <p>Indicates that a range of bytes was specified.</p>
460    pub fn set_accept_ranges(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
461        self.accept_ranges = input;
462        self
463    }
464    /// <p>Indicates that a range of bytes was specified.</p>
465    pub fn get_accept_ranges(&self) -> &::std::option::Option<::std::string::String> {
466        &self.accept_ranges
467    }
468    /// <p>If the object expiration is configured (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html"> <code>PutBucketLifecycleConfiguration</code> </a>), the response includes this header. It includes the <code>expiry-date</code> and <code>rule-id</code> key-value pairs providing object expiration information. The value of the <code>rule-id</code> is URL-encoded.</p><note>
469    /// <p>Object expiration information is not returned in directory buckets and this header returns the value "<code>NotImplemented</code>" in all responses for directory buckets.</p>
470    /// </note>
471    pub fn expiration(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
472        self.expiration = ::std::option::Option::Some(input.into());
473        self
474    }
475    /// <p>If the object expiration is configured (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html"> <code>PutBucketLifecycleConfiguration</code> </a>), the response includes this header. It includes the <code>expiry-date</code> and <code>rule-id</code> key-value pairs providing object expiration information. The value of the <code>rule-id</code> is URL-encoded.</p><note>
476    /// <p>Object expiration information is not returned in directory buckets and this header returns the value "<code>NotImplemented</code>" in all responses for directory buckets.</p>
477    /// </note>
478    pub fn set_expiration(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
479        self.expiration = input;
480        self
481    }
482    /// <p>If the object expiration is configured (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html"> <code>PutBucketLifecycleConfiguration</code> </a>), the response includes this header. It includes the <code>expiry-date</code> and <code>rule-id</code> key-value pairs providing object expiration information. The value of the <code>rule-id</code> is URL-encoded.</p><note>
483    /// <p>Object expiration information is not returned in directory buckets and this header returns the value "<code>NotImplemented</code>" in all responses for directory buckets.</p>
484    /// </note>
485    pub fn get_expiration(&self) -> &::std::option::Option<::std::string::String> {
486        &self.expiration
487    }
488    /// <p>If the object is an archived object (an object whose storage class is GLACIER), the response includes this header if either the archive restoration is in progress (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a> or an archive copy is already restored.</p>
489    /// <p>If an archive copy is already restored, the header value indicates when Amazon S3 is scheduled to delete the object copy. For example:</p>
490    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
491    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
492    /// <p>For more information about archiving objects, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning Objects: General Considerations</a>.</p><note>
493    /// <p>This functionality is not supported for directory buckets. Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
494    /// </note>
495    pub fn restore(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
496        self.restore = ::std::option::Option::Some(input.into());
497        self
498    }
499    /// <p>If the object is an archived object (an object whose storage class is GLACIER), the response includes this header if either the archive restoration is in progress (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a> or an archive copy is already restored.</p>
500    /// <p>If an archive copy is already restored, the header value indicates when Amazon S3 is scheduled to delete the object copy. For example:</p>
501    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
502    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
503    /// <p>For more information about archiving objects, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning Objects: General Considerations</a>.</p><note>
504    /// <p>This functionality is not supported for directory buckets. Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
505    /// </note>
506    pub fn set_restore(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
507        self.restore = input;
508        self
509    }
510    /// <p>If the object is an archived object (an object whose storage class is GLACIER), the response includes this header if either the archive restoration is in progress (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a> or an archive copy is already restored.</p>
511    /// <p>If an archive copy is already restored, the header value indicates when Amazon S3 is scheduled to delete the object copy. For example:</p>
512    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
513    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
514    /// <p>For more information about archiving objects, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning Objects: General Considerations</a>.</p><note>
515    /// <p>This functionality is not supported for directory buckets. Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
516    /// </note>
517    pub fn get_restore(&self) -> &::std::option::Option<::std::string::String> {
518        &self.restore
519    }
520    /// <p>The archive state of the head object.</p><note>
521    /// <p>This functionality is not supported for directory buckets.</p>
522    /// </note>
523    pub fn archive_status(mut self, input: crate::types::ArchiveStatus) -> Self {
524        self.archive_status = ::std::option::Option::Some(input);
525        self
526    }
527    /// <p>The archive state of the head object.</p><note>
528    /// <p>This functionality is not supported for directory buckets.</p>
529    /// </note>
530    pub fn set_archive_status(mut self, input: ::std::option::Option<crate::types::ArchiveStatus>) -> Self {
531        self.archive_status = input;
532        self
533    }
534    /// <p>The archive state of the head object.</p><note>
535    /// <p>This functionality is not supported for directory buckets.</p>
536    /// </note>
537    pub fn get_archive_status(&self) -> &::std::option::Option<crate::types::ArchiveStatus> {
538        &self.archive_status
539    }
540    /// <p>Date and time when the object was last modified.</p>
541    pub fn last_modified(mut self, input: ::aws_smithy_types::DateTime) -> Self {
542        self.last_modified = ::std::option::Option::Some(input);
543        self
544    }
545    /// <p>Date and time when the object was last modified.</p>
546    pub fn set_last_modified(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
547        self.last_modified = input;
548        self
549    }
550    /// <p>Date and time when the object was last modified.</p>
551    pub fn get_last_modified(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
552        &self.last_modified
553    }
554    /// <p>Size of the body in bytes.</p>
555    pub fn content_length(mut self, input: i64) -> Self {
556        self.content_length = ::std::option::Option::Some(input);
557        self
558    }
559    /// <p>Size of the body in bytes.</p>
560    pub fn set_content_length(mut self, input: ::std::option::Option<i64>) -> Self {
561        self.content_length = input;
562        self
563    }
564    /// <p>Size of the body in bytes.</p>
565    pub fn get_content_length(&self) -> &::std::option::Option<i64> {
566        &self.content_length
567    }
568    /// <p>The Base64 encoded, 32-bit <code>CRC-32 checksum</code> of the object. This checksum is only be present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
569    pub fn checksum_crc32(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
570        self.checksum_crc32 = ::std::option::Option::Some(input.into());
571        self
572    }
573    /// <p>The Base64 encoded, 32-bit <code>CRC-32 checksum</code> of the object. This checksum is only be present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
574    pub fn set_checksum_crc32(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
575        self.checksum_crc32 = input;
576        self
577    }
578    /// <p>The Base64 encoded, 32-bit <code>CRC-32 checksum</code> of the object. This checksum is only be present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
579    pub fn get_checksum_crc32(&self) -> &::std::option::Option<::std::string::String> {
580        &self.checksum_crc32
581    }
582    /// <p>The Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. This checksum is only present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
583    pub fn checksum_crc32_c(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
584        self.checksum_crc32_c = ::std::option::Option::Some(input.into());
585        self
586    }
587    /// <p>The Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. This checksum is only present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
588    pub fn set_checksum_crc32_c(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
589        self.checksum_crc32_c = input;
590        self
591    }
592    /// <p>The Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. This checksum is only present if the checksum was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
593    pub fn get_checksum_crc32_c(&self) -> &::std::option::Option<::std::string::String> {
594        &self.checksum_crc32_c
595    }
596    /// <p>The Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
597    pub fn checksum_crc64_nvme(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
598        self.checksum_crc64_nvme = ::std::option::Option::Some(input.into());
599        self
600    }
601    /// <p>The Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
602    pub fn set_checksum_crc64_nvme(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
603        self.checksum_crc64_nvme = input;
604        self
605    }
606    /// <p>The Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
607    pub fn get_checksum_crc64_nvme(&self) -> &::std::option::Option<::std::string::String> {
608        &self.checksum_crc64_nvme
609    }
610    /// <p>The Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. This will only be present if the object was uploaded with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
611    pub fn checksum_sha1(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
612        self.checksum_sha1 = ::std::option::Option::Some(input.into());
613        self
614    }
615    /// <p>The Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. This will only be present if the object was uploaded with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
616    pub fn set_checksum_sha1(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
617        self.checksum_sha1 = input;
618        self
619    }
620    /// <p>The Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. This will only be present if the object was uploaded with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
621    pub fn get_checksum_sha1(&self) -> &::std::option::Option<::std::string::String> {
622        &self.checksum_sha1
623    }
624    /// <p>The Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. This will only be present if the object was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
625    pub fn checksum_sha256(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
626        self.checksum_sha256 = ::std::option::Option::Some(input.into());
627        self
628    }
629    /// <p>The Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. This will only be present if the object was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
630    pub fn set_checksum_sha256(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
631        self.checksum_sha256 = input;
632        self
633    }
634    /// <p>The Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. This will only be present if the object was uploaded with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated with multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums"> Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
635    pub fn get_checksum_sha256(&self) -> &::std::option::Option<::std::string::String> {
636        &self.checksum_sha256
637    }
638    /// <p>The checksum type, which determines how part-level checksums are combined to create an object-level checksum for multipart objects. You can use this header response to verify that the checksum type that is received is the same checksum type that was specified in <code>CreateMultipartUpload</code> request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
639    pub fn checksum_type(mut self, input: crate::types::ChecksumType) -> Self {
640        self.checksum_type = ::std::option::Option::Some(input);
641        self
642    }
643    /// <p>The checksum type, which determines how part-level checksums are combined to create an object-level checksum for multipart objects. You can use this header response to verify that the checksum type that is received is the same checksum type that was specified in <code>CreateMultipartUpload</code> request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
644    pub fn set_checksum_type(mut self, input: ::std::option::Option<crate::types::ChecksumType>) -> Self {
645        self.checksum_type = input;
646        self
647    }
648    /// <p>The checksum type, which determines how part-level checksums are combined to create an object-level checksum for multipart objects. You can use this header response to verify that the checksum type that is received is the same checksum type that was specified in <code>CreateMultipartUpload</code> request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
649    pub fn get_checksum_type(&self) -> &::std::option::Option<crate::types::ChecksumType> {
650        &self.checksum_type
651    }
652    /// <p>An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.</p>
653    pub fn e_tag(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
654        self.e_tag = ::std::option::Option::Some(input.into());
655        self
656    }
657    /// <p>An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.</p>
658    pub fn set_e_tag(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
659        self.e_tag = input;
660        self
661    }
662    /// <p>An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.</p>
663    pub fn get_e_tag(&self) -> &::std::option::Option<::std::string::String> {
664        &self.e_tag
665    }
666    /// <p>This is set to the number of metadata entries not returned in <code>x-amz-meta</code> headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers.</p><note>
667    /// <p>This functionality is not supported for directory buckets.</p>
668    /// </note>
669    pub fn missing_meta(mut self, input: i32) -> Self {
670        self.missing_meta = ::std::option::Option::Some(input);
671        self
672    }
673    /// <p>This is set to the number of metadata entries not returned in <code>x-amz-meta</code> headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers.</p><note>
674    /// <p>This functionality is not supported for directory buckets.</p>
675    /// </note>
676    pub fn set_missing_meta(mut self, input: ::std::option::Option<i32>) -> Self {
677        self.missing_meta = input;
678        self
679    }
680    /// <p>This is set to the number of metadata entries not returned in <code>x-amz-meta</code> headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers.</p><note>
681    /// <p>This functionality is not supported for directory buckets.</p>
682    /// </note>
683    pub fn get_missing_meta(&self) -> &::std::option::Option<i32> {
684        &self.missing_meta
685    }
686    /// <p>Version ID of the object.</p><note>
687    /// <p>This functionality is not supported for directory buckets.</p>
688    /// </note>
689    pub fn version_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
690        self.version_id = ::std::option::Option::Some(input.into());
691        self
692    }
693    /// <p>Version ID of the object.</p><note>
694    /// <p>This functionality is not supported for directory buckets.</p>
695    /// </note>
696    pub fn set_version_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
697        self.version_id = input;
698        self
699    }
700    /// <p>Version ID of the object.</p><note>
701    /// <p>This functionality is not supported for directory buckets.</p>
702    /// </note>
703    pub fn get_version_id(&self) -> &::std::option::Option<::std::string::String> {
704        &self.version_id
705    }
706    /// <p>Specifies caching behavior along the request/reply chain.</p>
707    pub fn cache_control(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
708        self.cache_control = ::std::option::Option::Some(input.into());
709        self
710    }
711    /// <p>Specifies caching behavior along the request/reply chain.</p>
712    pub fn set_cache_control(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
713        self.cache_control = input;
714        self
715    }
716    /// <p>Specifies caching behavior along the request/reply chain.</p>
717    pub fn get_cache_control(&self) -> &::std::option::Option<::std::string::String> {
718        &self.cache_control
719    }
720    /// <p>Specifies presentational information for the object.</p>
721    pub fn content_disposition(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
722        self.content_disposition = ::std::option::Option::Some(input.into());
723        self
724    }
725    /// <p>Specifies presentational information for the object.</p>
726    pub fn set_content_disposition(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
727        self.content_disposition = input;
728        self
729    }
730    /// <p>Specifies presentational information for the object.</p>
731    pub fn get_content_disposition(&self) -> &::std::option::Option<::std::string::String> {
732        &self.content_disposition
733    }
734    /// <p>Indicates what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.</p>
735    pub fn content_encoding(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
736        self.content_encoding = ::std::option::Option::Some(input.into());
737        self
738    }
739    /// <p>Indicates what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.</p>
740    pub fn set_content_encoding(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
741        self.content_encoding = input;
742        self
743    }
744    /// <p>Indicates what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.</p>
745    pub fn get_content_encoding(&self) -> &::std::option::Option<::std::string::String> {
746        &self.content_encoding
747    }
748    /// <p>The language the content is in.</p>
749    pub fn content_language(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
750        self.content_language = ::std::option::Option::Some(input.into());
751        self
752    }
753    /// <p>The language the content is in.</p>
754    pub fn set_content_language(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
755        self.content_language = input;
756        self
757    }
758    /// <p>The language the content is in.</p>
759    pub fn get_content_language(&self) -> &::std::option::Option<::std::string::String> {
760        &self.content_language
761    }
762    /// <p>A standard MIME type describing the format of the object data.</p>
763    pub fn content_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
764        self.content_type = ::std::option::Option::Some(input.into());
765        self
766    }
767    /// <p>A standard MIME type describing the format of the object data.</p>
768    pub fn set_content_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
769        self.content_type = input;
770        self
771    }
772    /// <p>A standard MIME type describing the format of the object data.</p>
773    pub fn get_content_type(&self) -> &::std::option::Option<::std::string::String> {
774        &self.content_type
775    }
776    /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata.</p><note>
777    /// <p>This functionality is not supported for directory buckets.</p>
778    /// </note>
779    pub fn website_redirect_location(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
780        self.website_redirect_location = ::std::option::Option::Some(input.into());
781        self
782    }
783    /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata.</p><note>
784    /// <p>This functionality is not supported for directory buckets.</p>
785    /// </note>
786    pub fn set_website_redirect_location(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
787        self.website_redirect_location = input;
788        self
789    }
790    /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata.</p><note>
791    /// <p>This functionality is not supported for directory buckets.</p>
792    /// </note>
793    pub fn get_website_redirect_location(&self) -> &::std::option::Option<::std::string::String> {
794        &self.website_redirect_location
795    }
796    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
797    pub fn server_side_encryption(mut self, input: crate::types::ServerSideEncryption) -> Self {
798        self.server_side_encryption = ::std::option::Option::Some(input);
799        self
800    }
801    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
802    pub fn set_server_side_encryption(mut self, input: ::std::option::Option<crate::types::ServerSideEncryption>) -> Self {
803        self.server_side_encryption = input;
804        self
805    }
806    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
807    pub fn get_server_side_encryption(&self) -> &::std::option::Option<crate::types::ServerSideEncryption> {
808        &self.server_side_encryption
809    }
810    /// Adds a key-value pair to `metadata`.
811    ///
812    /// To override the contents of this collection use [`set_metadata`](Self::set_metadata).
813    ///
814    /// <p>A map of metadata to store with the object in S3.</p>
815    pub fn metadata(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
816        let mut hash_map = self.metadata.unwrap_or_default();
817        hash_map.insert(k.into(), v.into());
818        self.metadata = ::std::option::Option::Some(hash_map);
819        self
820    }
821    /// <p>A map of metadata to store with the object in S3.</p>
822    pub fn set_metadata(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
823        self.metadata = input;
824        self
825    }
826    /// <p>A map of metadata to store with the object in S3.</p>
827    pub fn get_metadata(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
828        &self.metadata
829    }
830    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to confirm the encryption algorithm that's used.</p><note>
831    /// <p>This functionality is not supported for directory buckets.</p>
832    /// </note>
833    pub fn sse_customer_algorithm(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
834        self.sse_customer_algorithm = ::std::option::Option::Some(input.into());
835        self
836    }
837    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to confirm the encryption algorithm that's used.</p><note>
838    /// <p>This functionality is not supported for directory buckets.</p>
839    /// </note>
840    pub fn set_sse_customer_algorithm(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
841        self.sse_customer_algorithm = input;
842        self
843    }
844    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to confirm the encryption algorithm that's used.</p><note>
845    /// <p>This functionality is not supported for directory buckets.</p>
846    /// </note>
847    pub fn get_sse_customer_algorithm(&self) -> &::std::option::Option<::std::string::String> {
848        &self.sse_customer_algorithm
849    }
850    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide the round-trip message integrity verification of the customer-provided encryption key.</p><note>
851    /// <p>This functionality is not supported for directory buckets.</p>
852    /// </note>
853    pub fn sse_customer_key_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
854        self.sse_customer_key_md5 = ::std::option::Option::Some(input.into());
855        self
856    }
857    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide the round-trip message integrity verification of the customer-provided encryption key.</p><note>
858    /// <p>This functionality is not supported for directory buckets.</p>
859    /// </note>
860    pub fn set_sse_customer_key_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
861        self.sse_customer_key_md5 = input;
862        self
863    }
864    /// <p>If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide the round-trip message integrity verification of the customer-provided encryption key.</p><note>
865    /// <p>This functionality is not supported for directory buckets.</p>
866    /// </note>
867    pub fn get_sse_customer_key_md5(&self) -> &::std::option::Option<::std::string::String> {
868        &self.sse_customer_key_md5
869    }
870    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
871    pub fn ssekms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
872        self.ssekms_key_id = ::std::option::Option::Some(input.into());
873        self
874    }
875    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
876    pub fn set_ssekms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
877        self.ssekms_key_id = input;
878        self
879    }
880    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
881    pub fn get_ssekms_key_id(&self) -> &::std::option::Option<::std::string::String> {
882        &self.ssekms_key_id
883    }
884    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
885    pub fn bucket_key_enabled(mut self, input: bool) -> Self {
886        self.bucket_key_enabled = ::std::option::Option::Some(input);
887        self
888    }
889    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
890    pub fn set_bucket_key_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
891        self.bucket_key_enabled = input;
892        self
893    }
894    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
895    pub fn get_bucket_key_enabled(&self) -> &::std::option::Option<bool> {
896        &self.bucket_key_enabled
897    }
898    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
899    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
900    /// <p><b>Directory buckets </b> - Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
901    /// </note>
902    pub fn storage_class(mut self, input: crate::types::StorageClass) -> Self {
903        self.storage_class = ::std::option::Option::Some(input);
904        self
905    }
906    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
907    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
908    /// <p><b>Directory buckets </b> - Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
909    /// </note>
910    pub fn set_storage_class(mut self, input: ::std::option::Option<crate::types::StorageClass>) -> Self {
911        self.storage_class = input;
912        self
913    }
914    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
915    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
916    /// <p><b>Directory buckets </b> - Only the S3 Express One Zone storage class is supported by directory buckets to store objects.</p>
917    /// </note>
918    pub fn get_storage_class(&self) -> &::std::option::Option<crate::types::StorageClass> {
919        &self.storage_class
920    }
921    /// <p>If present, indicates that the requester was successfully charged for the request.</p><note>
922    /// <p>This functionality is not supported for directory buckets.</p>
923    /// </note>
924    pub fn request_charged(mut self, input: crate::types::RequestCharged) -> Self {
925        self.request_charged = ::std::option::Option::Some(input);
926        self
927    }
928    /// <p>If present, indicates that the requester was successfully charged for the request.</p><note>
929    /// <p>This functionality is not supported for directory buckets.</p>
930    /// </note>
931    pub fn set_request_charged(mut self, input: ::std::option::Option<crate::types::RequestCharged>) -> Self {
932        self.request_charged = input;
933        self
934    }
935    /// <p>If present, indicates that the requester was successfully charged for the request.</p><note>
936    /// <p>This functionality is not supported for directory buckets.</p>
937    /// </note>
938    pub fn get_request_charged(&self) -> &::std::option::Option<crate::types::RequestCharged> {
939        &self.request_charged
940    }
941    /// <p>Amazon S3 can return this header if your request involves a bucket that is either a source or a destination in a replication rule.</p>
942    /// <p>In replication, you have a source bucket on which you configure replication and destination bucket or buckets where Amazon S3 stores object replicas. When you request an object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>) from these buckets, Amazon S3 will return the <code>x-amz-replication-status</code> header in the response as follows:</p>
943    /// <ul>
944    /// <li>
945    /// <p><b>If requesting an object from the source bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header if the object in your request is eligible for replication.</p>
946    /// <p>For example, suppose that in your replication configuration, you specify object prefix <code>TaxDocs</code> requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>. Any objects you upload with this key name prefix, for example <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object request with this key name prefix, Amazon S3 will return the <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or FAILED indicating object replication status.</p></li>
947    /// <li>
948    /// <p><b>If requesting an object from a destination bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header with value REPLICA if the object in your request is a replica that Amazon S3 created and there is no replica modification replication in progress.</p></li>
949    /// <li>
950    /// <p><b>When replicating objects to multiple destination buckets</b>, the <code>x-amz-replication-status</code> header acts differently. The header of the source object will only return a value of COMPLETED when replication is successful to all destinations. The header will remain at value PENDING until replication has completed for all destinations. If one or more destinations fails replication the header will return FAILED.</p></li>
951    /// </ul>
952    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
953    /// <p>This functionality is not supported for directory buckets.</p>
954    /// </note>
955    pub fn replication_status(mut self, input: crate::types::ReplicationStatus) -> Self {
956        self.replication_status = ::std::option::Option::Some(input);
957        self
958    }
959    /// <p>Amazon S3 can return this header if your request involves a bucket that is either a source or a destination in a replication rule.</p>
960    /// <p>In replication, you have a source bucket on which you configure replication and destination bucket or buckets where Amazon S3 stores object replicas. When you request an object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>) from these buckets, Amazon S3 will return the <code>x-amz-replication-status</code> header in the response as follows:</p>
961    /// <ul>
962    /// <li>
963    /// <p><b>If requesting an object from the source bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header if the object in your request is eligible for replication.</p>
964    /// <p>For example, suppose that in your replication configuration, you specify object prefix <code>TaxDocs</code> requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>. Any objects you upload with this key name prefix, for example <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object request with this key name prefix, Amazon S3 will return the <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or FAILED indicating object replication status.</p></li>
965    /// <li>
966    /// <p><b>If requesting an object from a destination bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header with value REPLICA if the object in your request is a replica that Amazon S3 created and there is no replica modification replication in progress.</p></li>
967    /// <li>
968    /// <p><b>When replicating objects to multiple destination buckets</b>, the <code>x-amz-replication-status</code> header acts differently. The header of the source object will only return a value of COMPLETED when replication is successful to all destinations. The header will remain at value PENDING until replication has completed for all destinations. If one or more destinations fails replication the header will return FAILED.</p></li>
969    /// </ul>
970    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
971    /// <p>This functionality is not supported for directory buckets.</p>
972    /// </note>
973    pub fn set_replication_status(mut self, input: ::std::option::Option<crate::types::ReplicationStatus>) -> Self {
974        self.replication_status = input;
975        self
976    }
977    /// <p>Amazon S3 can return this header if your request involves a bucket that is either a source or a destination in a replication rule.</p>
978    /// <p>In replication, you have a source bucket on which you configure replication and destination bucket or buckets where Amazon S3 stores object replicas. When you request an object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>) from these buckets, Amazon S3 will return the <code>x-amz-replication-status</code> header in the response as follows:</p>
979    /// <ul>
980    /// <li>
981    /// <p><b>If requesting an object from the source bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header if the object in your request is eligible for replication.</p>
982    /// <p>For example, suppose that in your replication configuration, you specify object prefix <code>TaxDocs</code> requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>. Any objects you upload with this key name prefix, for example <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object request with this key name prefix, Amazon S3 will return the <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or FAILED indicating object replication status.</p></li>
983    /// <li>
984    /// <p><b>If requesting an object from a destination bucket</b>, Amazon S3 will return the <code>x-amz-replication-status</code> header with value REPLICA if the object in your request is a replica that Amazon S3 created and there is no replica modification replication in progress.</p></li>
985    /// <li>
986    /// <p><b>When replicating objects to multiple destination buckets</b>, the <code>x-amz-replication-status</code> header acts differently. The header of the source object will only return a value of COMPLETED when replication is successful to all destinations. The header will remain at value PENDING until replication has completed for all destinations. If one or more destinations fails replication the header will return FAILED.</p></li>
987    /// </ul>
988    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
989    /// <p>This functionality is not supported for directory buckets.</p>
990    /// </note>
991    pub fn get_replication_status(&self) -> &::std::option::Option<crate::types::ReplicationStatus> {
992        &self.replication_status
993    }
994    /// <p>The count of parts this object has. This value is only returned if you specify <code>partNumber</code> in your request and the object was uploaded as a multipart upload.</p>
995    pub fn parts_count(mut self, input: i32) -> Self {
996        self.parts_count = ::std::option::Option::Some(input);
997        self
998    }
999    /// <p>The count of parts this object has. This value is only returned if you specify <code>partNumber</code> in your request and the object was uploaded as a multipart upload.</p>
1000    pub fn set_parts_count(mut self, input: ::std::option::Option<i32>) -> Self {
1001        self.parts_count = input;
1002        self
1003    }
1004    /// <p>The count of parts this object has. This value is only returned if you specify <code>partNumber</code> in your request and the object was uploaded as a multipart upload.</p>
1005    pub fn get_parts_count(&self) -> &::std::option::Option<i32> {
1006        &self.parts_count
1007    }
1008    /// <p>The Object Lock mode, if any, that's in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
1009    /// <p>This functionality is not supported for directory buckets.</p>
1010    /// </note>
1011    pub fn object_lock_mode(mut self, input: crate::types::ObjectLockMode) -> Self {
1012        self.object_lock_mode = ::std::option::Option::Some(input);
1013        self
1014    }
1015    /// <p>The Object Lock mode, if any, that's in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
1016    /// <p>This functionality is not supported for directory buckets.</p>
1017    /// </note>
1018    pub fn set_object_lock_mode(mut self, input: ::std::option::Option<crate::types::ObjectLockMode>) -> Self {
1019        self.object_lock_mode = input;
1020        self
1021    }
1022    /// <p>The Object Lock mode, if any, that's in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
1023    /// <p>This functionality is not supported for directory buckets.</p>
1024    /// </note>
1025    pub fn get_object_lock_mode(&self) -> &::std::option::Option<crate::types::ObjectLockMode> {
1026        &self.object_lock_mode
1027    }
1028    /// <p>The date and time when the Object Lock retention period expires. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
1029    /// <p>This functionality is not supported for directory buckets.</p>
1030    /// </note>
1031    pub fn object_lock_retain_until_date(mut self, input: ::aws_smithy_types::DateTime) -> Self {
1032        self.object_lock_retain_until_date = ::std::option::Option::Some(input);
1033        self
1034    }
1035    /// <p>The date and time when the Object Lock retention period expires. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
1036    /// <p>This functionality is not supported for directory buckets.</p>
1037    /// </note>
1038    pub fn set_object_lock_retain_until_date(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
1039        self.object_lock_retain_until_date = input;
1040        self
1041    }
1042    /// <p>The date and time when the Object Lock retention period expires. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
1043    /// <p>This functionality is not supported for directory buckets.</p>
1044    /// </note>
1045    pub fn get_object_lock_retain_until_date(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
1046        &self.object_lock_retain_until_date
1047    }
1048    /// <p>Specifies whether a legal hold is in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectLegalHold</code> permission. This header is not returned if the specified version of this object has never had a legal hold applied. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
1049    /// <p>This functionality is not supported for directory buckets.</p>
1050    /// </note>
1051    pub fn object_lock_legal_hold_status(mut self, input: crate::types::ObjectLockLegalHoldStatus) -> Self {
1052        self.object_lock_legal_hold_status = ::std::option::Option::Some(input);
1053        self
1054    }
1055    /// <p>Specifies whether a legal hold is in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectLegalHold</code> permission. This header is not returned if the specified version of this object has never had a legal hold applied. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
1056    /// <p>This functionality is not supported for directory buckets.</p>
1057    /// </note>
1058    pub fn set_object_lock_legal_hold_status(mut self, input: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>) -> Self {
1059        self.object_lock_legal_hold_status = input;
1060        self
1061    }
1062    /// <p>Specifies whether a legal hold is in effect for this object. This header is only returned if the requester has the <code>s3:GetObjectLegalHold</code> permission. This header is not returned if the specified version of this object has never had a legal hold applied. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a>.</p><note>
1063    /// <p>This functionality is not supported for directory buckets.</p>
1064    /// </note>
1065    pub fn get_object_lock_legal_hold_status(&self) -> &::std::option::Option<crate::types::ObjectLockLegalHoldStatus> {
1066        &self.object_lock_legal_hold_status
1067    }
1068    /// <p>The date and time at which the object is no longer cacheable.</p>
1069    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
1070    pub fn expires(mut self, input: ::aws_smithy_types::DateTime) -> Self {
1071        self.expires = ::std::option::Option::Some(input);
1072        self
1073    }
1074    /// <p>The date and time at which the object is no longer cacheable.</p>
1075    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
1076    pub fn set_expires(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
1077        self.expires = input;
1078        self
1079    }
1080    /// <p>The date and time at which the object is no longer cacheable.</p>
1081    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
1082    pub fn get_expires(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
1083        &self.expires
1084    }
1085    /// <p>The date and time at which the object is no longer cacheable.</p>
1086    pub fn expires_string(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1087        self.expires_string = ::std::option::Option::Some(input.into());
1088        self
1089    }
1090    /// <p>The date and time at which the object is no longer cacheable.</p>
1091    pub fn set_expires_string(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1092        self.expires_string = input;
1093        self
1094    }
1095    /// <p>The date and time at which the object is no longer cacheable.</p>
1096    pub fn get_expires_string(&self) -> &::std::option::Option<::std::string::String> {
1097        &self.expires_string
1098    }
1099    pub(crate) fn _extended_request_id(mut self, extended_request_id: impl Into<String>) -> Self {
1100        self._extended_request_id = Some(extended_request_id.into());
1101        self
1102    }
1103
1104    pub(crate) fn _set_extended_request_id(&mut self, extended_request_id: Option<String>) -> &mut Self {
1105        self._extended_request_id = extended_request_id;
1106        self
1107    }
1108    pub(crate) fn _request_id(mut self, request_id: impl Into<String>) -> Self {
1109        self._request_id = Some(request_id.into());
1110        self
1111    }
1112
1113    pub(crate) fn _set_request_id(&mut self, request_id: Option<String>) -> &mut Self {
1114        self._request_id = request_id;
1115        self
1116    }
1117    /// Consumes the builder and constructs a [`HeadObjectOutput`](crate::operation::head_object::HeadObjectOutput).
1118    pub fn build(self) -> crate::operation::head_object::HeadObjectOutput {
1119        crate::operation::head_object::HeadObjectOutput {
1120            delete_marker: self.delete_marker,
1121            accept_ranges: self.accept_ranges,
1122            expiration: self.expiration,
1123            restore: self.restore,
1124            archive_status: self.archive_status,
1125            last_modified: self.last_modified,
1126            content_length: self.content_length,
1127            checksum_crc32: self.checksum_crc32,
1128            checksum_crc32_c: self.checksum_crc32_c,
1129            checksum_crc64_nvme: self.checksum_crc64_nvme,
1130            checksum_sha1: self.checksum_sha1,
1131            checksum_sha256: self.checksum_sha256,
1132            checksum_type: self.checksum_type,
1133            e_tag: self.e_tag,
1134            missing_meta: self.missing_meta,
1135            version_id: self.version_id,
1136            cache_control: self.cache_control,
1137            content_disposition: self.content_disposition,
1138            content_encoding: self.content_encoding,
1139            content_language: self.content_language,
1140            content_type: self.content_type,
1141            website_redirect_location: self.website_redirect_location,
1142            server_side_encryption: self.server_side_encryption,
1143            metadata: self.metadata,
1144            sse_customer_algorithm: self.sse_customer_algorithm,
1145            sse_customer_key_md5: self.sse_customer_key_md5,
1146            ssekms_key_id: self.ssekms_key_id,
1147            bucket_key_enabled: self.bucket_key_enabled,
1148            storage_class: self.storage_class,
1149            request_charged: self.request_charged,
1150            replication_status: self.replication_status,
1151            parts_count: self.parts_count,
1152            object_lock_mode: self.object_lock_mode,
1153            object_lock_retain_until_date: self.object_lock_retain_until_date,
1154            object_lock_legal_hold_status: self.object_lock_legal_hold_status,
1155            expires: self.expires,
1156            expires_string: self.expires_string,
1157            _extended_request_id: self._extended_request_id,
1158            _request_id: self._request_id,
1159        }
1160    }
1161}
1162impl ::std::fmt::Debug for HeadObjectOutputBuilder {
1163    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1164        let mut formatter = f.debug_struct("HeadObjectOutputBuilder");
1165        formatter.field("delete_marker", &self.delete_marker);
1166        formatter.field("accept_ranges", &self.accept_ranges);
1167        formatter.field("expiration", &self.expiration);
1168        formatter.field("restore", &self.restore);
1169        formatter.field("archive_status", &self.archive_status);
1170        formatter.field("last_modified", &self.last_modified);
1171        formatter.field("content_length", &self.content_length);
1172        formatter.field("checksum_crc32", &self.checksum_crc32);
1173        formatter.field("checksum_crc32_c", &self.checksum_crc32_c);
1174        formatter.field("checksum_crc64_nvme", &self.checksum_crc64_nvme);
1175        formatter.field("checksum_sha1", &self.checksum_sha1);
1176        formatter.field("checksum_sha256", &self.checksum_sha256);
1177        formatter.field("checksum_type", &self.checksum_type);
1178        formatter.field("e_tag", &self.e_tag);
1179        formatter.field("missing_meta", &self.missing_meta);
1180        formatter.field("version_id", &self.version_id);
1181        formatter.field("cache_control", &self.cache_control);
1182        formatter.field("content_disposition", &self.content_disposition);
1183        formatter.field("content_encoding", &self.content_encoding);
1184        formatter.field("content_language", &self.content_language);
1185        formatter.field("content_type", &self.content_type);
1186        formatter.field("website_redirect_location", &self.website_redirect_location);
1187        formatter.field("server_side_encryption", &self.server_side_encryption);
1188        formatter.field("metadata", &self.metadata);
1189        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
1190        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
1191        formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
1192        formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
1193        formatter.field("storage_class", &self.storage_class);
1194        formatter.field("request_charged", &self.request_charged);
1195        formatter.field("replication_status", &self.replication_status);
1196        formatter.field("parts_count", &self.parts_count);
1197        formatter.field("object_lock_mode", &self.object_lock_mode);
1198        formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
1199        formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
1200        formatter.field("expires", &self.expires);
1201        formatter.field("expires_string", &self.expires_string);
1202        formatter.field("_extended_request_id", &self._extended_request_id);
1203        formatter.field("_request_id", &self._request_id);
1204        formatter.finish()
1205    }
1206}