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. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</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>CRC32 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>CRC32C</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>CRC64NVME</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>SHA1</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>SHA256</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>The portion of the object returned in the response for a <code>GET</code> request.</p>
65    pub content_range: ::std::option::Option<::std::string::String>,
66    /// <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>
67    /// <p>This functionality is not supported for directory buckets.</p>
68    /// </note>
69    pub website_redirect_location: ::std::option::Option<::std::string::String>,
70    /// <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>
71    pub server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
72    /// <p>A map of metadata to store with the object in S3.</p>
73    pub metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
74    /// <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>
75    /// <p>This functionality is not supported for directory buckets.</p>
76    /// </note>
77    pub sse_customer_algorithm: ::std::option::Option<::std::string::String>,
78    /// <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>
79    /// <p>This functionality is not supported for directory buckets.</p>
80    /// </note>
81    pub sse_customer_key_md5: ::std::option::Option<::std::string::String>,
82    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
83    pub ssekms_key_id: ::std::option::Option<::std::string::String>,
84    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
85    pub bucket_key_enabled: ::std::option::Option<bool>,
86    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
87    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
88    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
89    /// </note>
90    pub storage_class: ::std::option::Option<crate::types::StorageClass>,
91    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
92    /// <p>This functionality is not supported for directory buckets.</p>
93    /// </note>
94    pub request_charged: ::std::option::Option<crate::types::RequestCharged>,
95    /// <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>
96    /// <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>
97    /// <ul>
98    /// <li>
99    /// <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>
100    /// <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>
101    /// <li>
102    /// <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>
103    /// <li>
104    /// <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>
105    /// </ul>
106    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
107    /// <p>This functionality is not supported for directory buckets.</p>
108    /// </note>
109    pub replication_status: ::std::option::Option<crate::types::ReplicationStatus>,
110    /// <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>
111    pub parts_count: ::std::option::Option<i32>,
112    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
113    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
114    /// <p>This functionality is not supported for directory buckets.</p>
115    /// </note>
116    pub tag_count: ::std::option::Option<i32>,
117    /// <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>
118    /// <p>This functionality is not supported for directory buckets.</p>
119    /// </note>
120    pub object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
121    /// <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>
122    /// <p>This functionality is not supported for directory buckets.</p>
123    /// </note>
124    pub object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
125    /// <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>
126    /// <p>This functionality is not supported for directory buckets.</p>
127    /// </note>
128    pub object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
129    /// <p>The date and time at which the object is no longer cacheable.</p>
130    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
131    pub expires: ::std::option::Option<::aws_smithy_types::DateTime>,
132    /// <p>The date and time at which the object is no longer cacheable.</p>
133    pub expires_string: ::std::option::Option<::std::string::String>,
134    _extended_request_id: Option<String>,
135    _request_id: Option<String>,
136}
137impl HeadObjectOutput {
138    /// <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>
139    /// <p>This functionality is not supported for directory buckets.</p>
140    /// </note>
141    pub fn delete_marker(&self) -> ::std::option::Option<bool> {
142        self.delete_marker
143    }
144    /// <p>Indicates that a range of bytes was specified.</p>
145    pub fn accept_ranges(&self) -> ::std::option::Option<&str> {
146        self.accept_ranges.as_deref()
147    }
148    /// <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>
149    /// <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>
150    /// </note>
151    pub fn expiration(&self) -> ::std::option::Option<&str> {
152        self.expiration.as_deref()
153    }
154    /// <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>
155    /// <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>
156    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
157    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
158    /// <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>
159    /// <p>This functionality is not supported for directory buckets. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
160    /// </note>
161    pub fn restore(&self) -> ::std::option::Option<&str> {
162        self.restore.as_deref()
163    }
164    /// <p>The archive state of the head object.</p><note>
165    /// <p>This functionality is not supported for directory buckets.</p>
166    /// </note>
167    pub fn archive_status(&self) -> ::std::option::Option<&crate::types::ArchiveStatus> {
168        self.archive_status.as_ref()
169    }
170    /// <p>Date and time when the object was last modified.</p>
171    pub fn last_modified(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
172        self.last_modified.as_ref()
173    }
174    /// <p>Size of the body in bytes.</p>
175    pub fn content_length(&self) -> ::std::option::Option<i64> {
176        self.content_length
177    }
178    /// <p>The Base64 encoded, 32-bit <code>CRC32 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>
179    pub fn checksum_crc32(&self) -> ::std::option::Option<&str> {
180        self.checksum_crc32.as_deref()
181    }
182    /// <p>The Base64 encoded, 32-bit <code>CRC32C</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>
183    pub fn checksum_crc32_c(&self) -> ::std::option::Option<&str> {
184        self.checksum_crc32_c.as_deref()
185    }
186    /// <p>The Base64 encoded, 64-bit <code>CRC64NVME</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>
187    pub fn checksum_crc64_nvme(&self) -> ::std::option::Option<&str> {
188        self.checksum_crc64_nvme.as_deref()
189    }
190    /// <p>The Base64 encoded, 160-bit <code>SHA1</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>
191    pub fn checksum_sha1(&self) -> ::std::option::Option<&str> {
192        self.checksum_sha1.as_deref()
193    }
194    /// <p>The Base64 encoded, 256-bit <code>SHA256</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>
195    pub fn checksum_sha256(&self) -> ::std::option::Option<&str> {
196        self.checksum_sha256.as_deref()
197    }
198    /// <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>
199    pub fn checksum_type(&self) -> ::std::option::Option<&crate::types::ChecksumType> {
200        self.checksum_type.as_ref()
201    }
202    /// <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>
203    pub fn e_tag(&self) -> ::std::option::Option<&str> {
204        self.e_tag.as_deref()
205    }
206    /// <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>
207    /// <p>This functionality is not supported for directory buckets.</p>
208    /// </note>
209    pub fn missing_meta(&self) -> ::std::option::Option<i32> {
210        self.missing_meta
211    }
212    /// <p>Version ID of the object.</p><note>
213    /// <p>This functionality is not supported for directory buckets.</p>
214    /// </note>
215    pub fn version_id(&self) -> ::std::option::Option<&str> {
216        self.version_id.as_deref()
217    }
218    /// <p>Specifies caching behavior along the request/reply chain.</p>
219    pub fn cache_control(&self) -> ::std::option::Option<&str> {
220        self.cache_control.as_deref()
221    }
222    /// <p>Specifies presentational information for the object.</p>
223    pub fn content_disposition(&self) -> ::std::option::Option<&str> {
224        self.content_disposition.as_deref()
225    }
226    /// <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>
227    pub fn content_encoding(&self) -> ::std::option::Option<&str> {
228        self.content_encoding.as_deref()
229    }
230    /// <p>The language the content is in.</p>
231    pub fn content_language(&self) -> ::std::option::Option<&str> {
232        self.content_language.as_deref()
233    }
234    /// <p>A standard MIME type describing the format of the object data.</p>
235    pub fn content_type(&self) -> ::std::option::Option<&str> {
236        self.content_type.as_deref()
237    }
238    /// <p>The portion of the object returned in the response for a <code>GET</code> request.</p>
239    pub fn content_range(&self) -> ::std::option::Option<&str> {
240        self.content_range.as_deref()
241    }
242    /// <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>
243    /// <p>This functionality is not supported for directory buckets.</p>
244    /// </note>
245    pub fn website_redirect_location(&self) -> ::std::option::Option<&str> {
246        self.website_redirect_location.as_deref()
247    }
248    /// <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>
249    pub fn server_side_encryption(&self) -> ::std::option::Option<&crate::types::ServerSideEncryption> {
250        self.server_side_encryption.as_ref()
251    }
252    /// <p>A map of metadata to store with the object in S3.</p>
253    pub fn metadata(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
254        self.metadata.as_ref()
255    }
256    /// <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>
257    /// <p>This functionality is not supported for directory buckets.</p>
258    /// </note>
259    pub fn sse_customer_algorithm(&self) -> ::std::option::Option<&str> {
260        self.sse_customer_algorithm.as_deref()
261    }
262    /// <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>
263    /// <p>This functionality is not supported for directory buckets.</p>
264    /// </note>
265    pub fn sse_customer_key_md5(&self) -> ::std::option::Option<&str> {
266        self.sse_customer_key_md5.as_deref()
267    }
268    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
269    pub fn ssekms_key_id(&self) -> ::std::option::Option<&str> {
270        self.ssekms_key_id.as_deref()
271    }
272    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
273    pub fn bucket_key_enabled(&self) -> ::std::option::Option<bool> {
274        self.bucket_key_enabled
275    }
276    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
277    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
278    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
279    /// </note>
280    pub fn storage_class(&self) -> ::std::option::Option<&crate::types::StorageClass> {
281        self.storage_class.as_ref()
282    }
283    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
284    /// <p>This functionality is not supported for directory buckets.</p>
285    /// </note>
286    pub fn request_charged(&self) -> ::std::option::Option<&crate::types::RequestCharged> {
287        self.request_charged.as_ref()
288    }
289    /// <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>
290    /// <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>
291    /// <ul>
292    /// <li>
293    /// <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>
294    /// <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>
295    /// <li>
296    /// <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>
297    /// <li>
298    /// <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>
299    /// </ul>
300    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
301    /// <p>This functionality is not supported for directory buckets.</p>
302    /// </note>
303    pub fn replication_status(&self) -> ::std::option::Option<&crate::types::ReplicationStatus> {
304        self.replication_status.as_ref()
305    }
306    /// <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>
307    pub fn parts_count(&self) -> ::std::option::Option<i32> {
308        self.parts_count
309    }
310    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
311    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
312    /// <p>This functionality is not supported for directory buckets.</p>
313    /// </note>
314    pub fn tag_count(&self) -> ::std::option::Option<i32> {
315        self.tag_count
316    }
317    /// <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>
318    /// <p>This functionality is not supported for directory buckets.</p>
319    /// </note>
320    pub fn object_lock_mode(&self) -> ::std::option::Option<&crate::types::ObjectLockMode> {
321        self.object_lock_mode.as_ref()
322    }
323    /// <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>
324    /// <p>This functionality is not supported for directory buckets.</p>
325    /// </note>
326    pub fn object_lock_retain_until_date(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
327        self.object_lock_retain_until_date.as_ref()
328    }
329    /// <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>
330    /// <p>This functionality is not supported for directory buckets.</p>
331    /// </note>
332    pub fn object_lock_legal_hold_status(&self) -> ::std::option::Option<&crate::types::ObjectLockLegalHoldStatus> {
333        self.object_lock_legal_hold_status.as_ref()
334    }
335    /// <p>The date and time at which the object is no longer cacheable.</p>
336    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
337    pub fn expires(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
338        self.expires.as_ref()
339    }
340    /// <p>The date and time at which the object is no longer cacheable.</p>
341    pub fn expires_string(&self) -> ::std::option::Option<&str> {
342        self.expires_string.as_deref()
343    }
344}
345impl ::std::fmt::Debug for HeadObjectOutput {
346    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
347        let mut formatter = f.debug_struct("HeadObjectOutput");
348        formatter.field("delete_marker", &self.delete_marker);
349        formatter.field("accept_ranges", &self.accept_ranges);
350        formatter.field("expiration", &self.expiration);
351        formatter.field("restore", &self.restore);
352        formatter.field("archive_status", &self.archive_status);
353        formatter.field("last_modified", &self.last_modified);
354        formatter.field("content_length", &self.content_length);
355        formatter.field("checksum_crc32", &self.checksum_crc32);
356        formatter.field("checksum_crc32_c", &self.checksum_crc32_c);
357        formatter.field("checksum_crc64_nvme", &self.checksum_crc64_nvme);
358        formatter.field("checksum_sha1", &self.checksum_sha1);
359        formatter.field("checksum_sha256", &self.checksum_sha256);
360        formatter.field("checksum_type", &self.checksum_type);
361        formatter.field("e_tag", &self.e_tag);
362        formatter.field("missing_meta", &self.missing_meta);
363        formatter.field("version_id", &self.version_id);
364        formatter.field("cache_control", &self.cache_control);
365        formatter.field("content_disposition", &self.content_disposition);
366        formatter.field("content_encoding", &self.content_encoding);
367        formatter.field("content_language", &self.content_language);
368        formatter.field("content_type", &self.content_type);
369        formatter.field("content_range", &self.content_range);
370        formatter.field("website_redirect_location", &self.website_redirect_location);
371        formatter.field("server_side_encryption", &self.server_side_encryption);
372        formatter.field("metadata", &self.metadata);
373        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
374        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
375        formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
376        formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
377        formatter.field("storage_class", &self.storage_class);
378        formatter.field("request_charged", &self.request_charged);
379        formatter.field("replication_status", &self.replication_status);
380        formatter.field("parts_count", &self.parts_count);
381        formatter.field("tag_count", &self.tag_count);
382        formatter.field("object_lock_mode", &self.object_lock_mode);
383        formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
384        formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
385        formatter.field("expires", &self.expires);
386        formatter.field("expires_string", &self.expires_string);
387        formatter.field("_extended_request_id", &self._extended_request_id);
388        formatter.field("_request_id", &self._request_id);
389        formatter.finish()
390    }
391}
392impl crate::s3_request_id::RequestIdExt for HeadObjectOutput {
393    fn extended_request_id(&self) -> Option<&str> {
394        self._extended_request_id.as_deref()
395    }
396}
397impl ::aws_types::request_id::RequestId for HeadObjectOutput {
398    fn request_id(&self) -> Option<&str> {
399        self._request_id.as_deref()
400    }
401}
402impl HeadObjectOutput {
403    /// Creates a new builder-style object to manufacture [`HeadObjectOutput`](crate::operation::head_object::HeadObjectOutput).
404    pub fn builder() -> crate::operation::head_object::builders::HeadObjectOutputBuilder {
405        crate::operation::head_object::builders::HeadObjectOutputBuilder::default()
406    }
407}
408
409/// A builder for [`HeadObjectOutput`](crate::operation::head_object::HeadObjectOutput).
410#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
411#[non_exhaustive]
412pub struct HeadObjectOutputBuilder {
413    pub(crate) delete_marker: ::std::option::Option<bool>,
414    pub(crate) accept_ranges: ::std::option::Option<::std::string::String>,
415    pub(crate) expiration: ::std::option::Option<::std::string::String>,
416    pub(crate) restore: ::std::option::Option<::std::string::String>,
417    pub(crate) archive_status: ::std::option::Option<crate::types::ArchiveStatus>,
418    pub(crate) last_modified: ::std::option::Option<::aws_smithy_types::DateTime>,
419    pub(crate) content_length: ::std::option::Option<i64>,
420    pub(crate) checksum_crc32: ::std::option::Option<::std::string::String>,
421    pub(crate) checksum_crc32_c: ::std::option::Option<::std::string::String>,
422    pub(crate) checksum_crc64_nvme: ::std::option::Option<::std::string::String>,
423    pub(crate) checksum_sha1: ::std::option::Option<::std::string::String>,
424    pub(crate) checksum_sha256: ::std::option::Option<::std::string::String>,
425    pub(crate) checksum_type: ::std::option::Option<crate::types::ChecksumType>,
426    pub(crate) e_tag: ::std::option::Option<::std::string::String>,
427    pub(crate) missing_meta: ::std::option::Option<i32>,
428    pub(crate) version_id: ::std::option::Option<::std::string::String>,
429    pub(crate) cache_control: ::std::option::Option<::std::string::String>,
430    pub(crate) content_disposition: ::std::option::Option<::std::string::String>,
431    pub(crate) content_encoding: ::std::option::Option<::std::string::String>,
432    pub(crate) content_language: ::std::option::Option<::std::string::String>,
433    pub(crate) content_type: ::std::option::Option<::std::string::String>,
434    pub(crate) content_range: ::std::option::Option<::std::string::String>,
435    pub(crate) website_redirect_location: ::std::option::Option<::std::string::String>,
436    pub(crate) server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
437    pub(crate) metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
438    pub(crate) sse_customer_algorithm: ::std::option::Option<::std::string::String>,
439    pub(crate) sse_customer_key_md5: ::std::option::Option<::std::string::String>,
440    pub(crate) ssekms_key_id: ::std::option::Option<::std::string::String>,
441    pub(crate) bucket_key_enabled: ::std::option::Option<bool>,
442    pub(crate) storage_class: ::std::option::Option<crate::types::StorageClass>,
443    pub(crate) request_charged: ::std::option::Option<crate::types::RequestCharged>,
444    pub(crate) replication_status: ::std::option::Option<crate::types::ReplicationStatus>,
445    pub(crate) parts_count: ::std::option::Option<i32>,
446    pub(crate) tag_count: ::std::option::Option<i32>,
447    pub(crate) object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
448    pub(crate) object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
449    pub(crate) object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
450    pub(crate) expires: ::std::option::Option<::aws_smithy_types::DateTime>,
451    pub(crate) expires_string: ::std::option::Option<::std::string::String>,
452    _extended_request_id: Option<String>,
453    _request_id: Option<String>,
454}
455impl HeadObjectOutputBuilder {
456    /// <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>
457    /// <p>This functionality is not supported for directory buckets.</p>
458    /// </note>
459    pub fn delete_marker(mut self, input: bool) -> Self {
460        self.delete_marker = ::std::option::Option::Some(input);
461        self
462    }
463    /// <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>
464    /// <p>This functionality is not supported for directory buckets.</p>
465    /// </note>
466    pub fn set_delete_marker(mut self, input: ::std::option::Option<bool>) -> Self {
467        self.delete_marker = input;
468        self
469    }
470    /// <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>
471    /// <p>This functionality is not supported for directory buckets.</p>
472    /// </note>
473    pub fn get_delete_marker(&self) -> &::std::option::Option<bool> {
474        &self.delete_marker
475    }
476    /// <p>Indicates that a range of bytes was specified.</p>
477    pub fn accept_ranges(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
478        self.accept_ranges = ::std::option::Option::Some(input.into());
479        self
480    }
481    /// <p>Indicates that a range of bytes was specified.</p>
482    pub fn set_accept_ranges(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
483        self.accept_ranges = input;
484        self
485    }
486    /// <p>Indicates that a range of bytes was specified.</p>
487    pub fn get_accept_ranges(&self) -> &::std::option::Option<::std::string::String> {
488        &self.accept_ranges
489    }
490    /// <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>
491    /// <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>
492    /// </note>
493    pub fn expiration(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
494        self.expiration = ::std::option::Option::Some(input.into());
495        self
496    }
497    /// <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>
498    /// <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>
499    /// </note>
500    pub fn set_expiration(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
501        self.expiration = input;
502        self
503    }
504    /// <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>
505    /// <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>
506    /// </note>
507    pub fn get_expiration(&self) -> &::std::option::Option<::std::string::String> {
508        &self.expiration
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. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
516    /// </note>
517    pub fn restore(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
518        self.restore = ::std::option::Option::Some(input.into());
519        self
520    }
521    /// <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>
522    /// <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>
523    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
524    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
525    /// <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>
526    /// <p>This functionality is not supported for directory buckets. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
527    /// </note>
528    pub fn set_restore(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
529        self.restore = input;
530        self
531    }
532    /// <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>
533    /// <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>
534    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
535    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
536    /// <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>
537    /// <p>This functionality is not supported for directory buckets. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
538    /// </note>
539    pub fn get_restore(&self) -> &::std::option::Option<::std::string::String> {
540        &self.restore
541    }
542    /// <p>The archive state of the head object.</p><note>
543    /// <p>This functionality is not supported for directory buckets.</p>
544    /// </note>
545    pub fn archive_status(mut self, input: crate::types::ArchiveStatus) -> Self {
546        self.archive_status = ::std::option::Option::Some(input);
547        self
548    }
549    /// <p>The archive state of the head object.</p><note>
550    /// <p>This functionality is not supported for directory buckets.</p>
551    /// </note>
552    pub fn set_archive_status(mut self, input: ::std::option::Option<crate::types::ArchiveStatus>) -> Self {
553        self.archive_status = input;
554        self
555    }
556    /// <p>The archive state of the head object.</p><note>
557    /// <p>This functionality is not supported for directory buckets.</p>
558    /// </note>
559    pub fn get_archive_status(&self) -> &::std::option::Option<crate::types::ArchiveStatus> {
560        &self.archive_status
561    }
562    /// <p>Date and time when the object was last modified.</p>
563    pub fn last_modified(mut self, input: ::aws_smithy_types::DateTime) -> Self {
564        self.last_modified = ::std::option::Option::Some(input);
565        self
566    }
567    /// <p>Date and time when the object was last modified.</p>
568    pub fn set_last_modified(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
569        self.last_modified = input;
570        self
571    }
572    /// <p>Date and time when the object was last modified.</p>
573    pub fn get_last_modified(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
574        &self.last_modified
575    }
576    /// <p>Size of the body in bytes.</p>
577    pub fn content_length(mut self, input: i64) -> Self {
578        self.content_length = ::std::option::Option::Some(input);
579        self
580    }
581    /// <p>Size of the body in bytes.</p>
582    pub fn set_content_length(mut self, input: ::std::option::Option<i64>) -> Self {
583        self.content_length = input;
584        self
585    }
586    /// <p>Size of the body in bytes.</p>
587    pub fn get_content_length(&self) -> &::std::option::Option<i64> {
588        &self.content_length
589    }
590    /// <p>The Base64 encoded, 32-bit <code>CRC32 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>
591    pub fn checksum_crc32(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
592        self.checksum_crc32 = ::std::option::Option::Some(input.into());
593        self
594    }
595    /// <p>The Base64 encoded, 32-bit <code>CRC32 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>
596    pub fn set_checksum_crc32(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
597        self.checksum_crc32 = input;
598        self
599    }
600    /// <p>The Base64 encoded, 32-bit <code>CRC32 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>
601    pub fn get_checksum_crc32(&self) -> &::std::option::Option<::std::string::String> {
602        &self.checksum_crc32
603    }
604    /// <p>The Base64 encoded, 32-bit <code>CRC32C</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>
605    pub fn checksum_crc32_c(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
606        self.checksum_crc32_c = ::std::option::Option::Some(input.into());
607        self
608    }
609    /// <p>The Base64 encoded, 32-bit <code>CRC32C</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>
610    pub fn set_checksum_crc32_c(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
611        self.checksum_crc32_c = input;
612        self
613    }
614    /// <p>The Base64 encoded, 32-bit <code>CRC32C</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>
615    pub fn get_checksum_crc32_c(&self) -> &::std::option::Option<::std::string::String> {
616        &self.checksum_crc32_c
617    }
618    /// <p>The Base64 encoded, 64-bit <code>CRC64NVME</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>
619    pub fn checksum_crc64_nvme(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
620        self.checksum_crc64_nvme = ::std::option::Option::Some(input.into());
621        self
622    }
623    /// <p>The Base64 encoded, 64-bit <code>CRC64NVME</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>
624    pub fn set_checksum_crc64_nvme(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
625        self.checksum_crc64_nvme = input;
626        self
627    }
628    /// <p>The Base64 encoded, 64-bit <code>CRC64NVME</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>
629    pub fn get_checksum_crc64_nvme(&self) -> &::std::option::Option<::std::string::String> {
630        &self.checksum_crc64_nvme
631    }
632    /// <p>The Base64 encoded, 160-bit <code>SHA1</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>
633    pub fn checksum_sha1(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
634        self.checksum_sha1 = ::std::option::Option::Some(input.into());
635        self
636    }
637    /// <p>The Base64 encoded, 160-bit <code>SHA1</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>
638    pub fn set_checksum_sha1(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
639        self.checksum_sha1 = input;
640        self
641    }
642    /// <p>The Base64 encoded, 160-bit <code>SHA1</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>
643    pub fn get_checksum_sha1(&self) -> &::std::option::Option<::std::string::String> {
644        &self.checksum_sha1
645    }
646    /// <p>The Base64 encoded, 256-bit <code>SHA256</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>
647    pub fn checksum_sha256(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
648        self.checksum_sha256 = ::std::option::Option::Some(input.into());
649        self
650    }
651    /// <p>The Base64 encoded, 256-bit <code>SHA256</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>
652    pub fn set_checksum_sha256(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
653        self.checksum_sha256 = input;
654        self
655    }
656    /// <p>The Base64 encoded, 256-bit <code>SHA256</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>
657    pub fn get_checksum_sha256(&self) -> &::std::option::Option<::std::string::String> {
658        &self.checksum_sha256
659    }
660    /// <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>
661    pub fn checksum_type(mut self, input: crate::types::ChecksumType) -> Self {
662        self.checksum_type = ::std::option::Option::Some(input);
663        self
664    }
665    /// <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>
666    pub fn set_checksum_type(mut self, input: ::std::option::Option<crate::types::ChecksumType>) -> Self {
667        self.checksum_type = input;
668        self
669    }
670    /// <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>
671    pub fn get_checksum_type(&self) -> &::std::option::Option<crate::types::ChecksumType> {
672        &self.checksum_type
673    }
674    /// <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>
675    pub fn e_tag(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
676        self.e_tag = ::std::option::Option::Some(input.into());
677        self
678    }
679    /// <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>
680    pub fn set_e_tag(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
681        self.e_tag = input;
682        self
683    }
684    /// <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>
685    pub fn get_e_tag(&self) -> &::std::option::Option<::std::string::String> {
686        &self.e_tag
687    }
688    /// <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>
689    /// <p>This functionality is not supported for directory buckets.</p>
690    /// </note>
691    pub fn missing_meta(mut self, input: i32) -> Self {
692        self.missing_meta = ::std::option::Option::Some(input);
693        self
694    }
695    /// <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>
696    /// <p>This functionality is not supported for directory buckets.</p>
697    /// </note>
698    pub fn set_missing_meta(mut self, input: ::std::option::Option<i32>) -> Self {
699        self.missing_meta = input;
700        self
701    }
702    /// <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>
703    /// <p>This functionality is not supported for directory buckets.</p>
704    /// </note>
705    pub fn get_missing_meta(&self) -> &::std::option::Option<i32> {
706        &self.missing_meta
707    }
708    /// <p>Version ID of the object.</p><note>
709    /// <p>This functionality is not supported for directory buckets.</p>
710    /// </note>
711    pub fn version_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
712        self.version_id = ::std::option::Option::Some(input.into());
713        self
714    }
715    /// <p>Version ID of the object.</p><note>
716    /// <p>This functionality is not supported for directory buckets.</p>
717    /// </note>
718    pub fn set_version_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
719        self.version_id = input;
720        self
721    }
722    /// <p>Version ID of the object.</p><note>
723    /// <p>This functionality is not supported for directory buckets.</p>
724    /// </note>
725    pub fn get_version_id(&self) -> &::std::option::Option<::std::string::String> {
726        &self.version_id
727    }
728    /// <p>Specifies caching behavior along the request/reply chain.</p>
729    pub fn cache_control(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
730        self.cache_control = ::std::option::Option::Some(input.into());
731        self
732    }
733    /// <p>Specifies caching behavior along the request/reply chain.</p>
734    pub fn set_cache_control(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
735        self.cache_control = input;
736        self
737    }
738    /// <p>Specifies caching behavior along the request/reply chain.</p>
739    pub fn get_cache_control(&self) -> &::std::option::Option<::std::string::String> {
740        &self.cache_control
741    }
742    /// <p>Specifies presentational information for the object.</p>
743    pub fn content_disposition(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
744        self.content_disposition = ::std::option::Option::Some(input.into());
745        self
746    }
747    /// <p>Specifies presentational information for the object.</p>
748    pub fn set_content_disposition(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
749        self.content_disposition = input;
750        self
751    }
752    /// <p>Specifies presentational information for the object.</p>
753    pub fn get_content_disposition(&self) -> &::std::option::Option<::std::string::String> {
754        &self.content_disposition
755    }
756    /// <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>
757    pub fn content_encoding(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
758        self.content_encoding = ::std::option::Option::Some(input.into());
759        self
760    }
761    /// <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>
762    pub fn set_content_encoding(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
763        self.content_encoding = input;
764        self
765    }
766    /// <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>
767    pub fn get_content_encoding(&self) -> &::std::option::Option<::std::string::String> {
768        &self.content_encoding
769    }
770    /// <p>The language the content is in.</p>
771    pub fn content_language(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
772        self.content_language = ::std::option::Option::Some(input.into());
773        self
774    }
775    /// <p>The language the content is in.</p>
776    pub fn set_content_language(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
777        self.content_language = input;
778        self
779    }
780    /// <p>The language the content is in.</p>
781    pub fn get_content_language(&self) -> &::std::option::Option<::std::string::String> {
782        &self.content_language
783    }
784    /// <p>A standard MIME type describing the format of the object data.</p>
785    pub fn content_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
786        self.content_type = ::std::option::Option::Some(input.into());
787        self
788    }
789    /// <p>A standard MIME type describing the format of the object data.</p>
790    pub fn set_content_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
791        self.content_type = input;
792        self
793    }
794    /// <p>A standard MIME type describing the format of the object data.</p>
795    pub fn get_content_type(&self) -> &::std::option::Option<::std::string::String> {
796        &self.content_type
797    }
798    /// <p>The portion of the object returned in the response for a <code>GET</code> request.</p>
799    pub fn content_range(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
800        self.content_range = ::std::option::Option::Some(input.into());
801        self
802    }
803    /// <p>The portion of the object returned in the response for a <code>GET</code> request.</p>
804    pub fn set_content_range(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
805        self.content_range = input;
806        self
807    }
808    /// <p>The portion of the object returned in the response for a <code>GET</code> request.</p>
809    pub fn get_content_range(&self) -> &::std::option::Option<::std::string::String> {
810        &self.content_range
811    }
812    /// <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>
813    /// <p>This functionality is not supported for directory buckets.</p>
814    /// </note>
815    pub fn website_redirect_location(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
816        self.website_redirect_location = ::std::option::Option::Some(input.into());
817        self
818    }
819    /// <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>
820    /// <p>This functionality is not supported for directory buckets.</p>
821    /// </note>
822    pub fn set_website_redirect_location(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
823        self.website_redirect_location = input;
824        self
825    }
826    /// <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>
827    /// <p>This functionality is not supported for directory buckets.</p>
828    /// </note>
829    pub fn get_website_redirect_location(&self) -> &::std::option::Option<::std::string::String> {
830        &self.website_redirect_location
831    }
832    /// <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>
833    pub fn server_side_encryption(mut self, input: crate::types::ServerSideEncryption) -> Self {
834        self.server_side_encryption = ::std::option::Option::Some(input);
835        self
836    }
837    /// <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>
838    pub fn set_server_side_encryption(mut self, input: ::std::option::Option<crate::types::ServerSideEncryption>) -> Self {
839        self.server_side_encryption = input;
840        self
841    }
842    /// <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>
843    pub fn get_server_side_encryption(&self) -> &::std::option::Option<crate::types::ServerSideEncryption> {
844        &self.server_side_encryption
845    }
846    /// Adds a key-value pair to `metadata`.
847    ///
848    /// To override the contents of this collection use [`set_metadata`](Self::set_metadata).
849    ///
850    /// <p>A map of metadata to store with the object in S3.</p>
851    pub fn metadata(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
852        let mut hash_map = self.metadata.unwrap_or_default();
853        hash_map.insert(k.into(), v.into());
854        self.metadata = ::std::option::Option::Some(hash_map);
855        self
856    }
857    /// <p>A map of metadata to store with the object in S3.</p>
858    pub fn set_metadata(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
859        self.metadata = input;
860        self
861    }
862    /// <p>A map of metadata to store with the object in S3.</p>
863    pub fn get_metadata(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
864        &self.metadata
865    }
866    /// <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>
867    /// <p>This functionality is not supported for directory buckets.</p>
868    /// </note>
869    pub fn sse_customer_algorithm(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
870        self.sse_customer_algorithm = ::std::option::Option::Some(input.into());
871        self
872    }
873    /// <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>
874    /// <p>This functionality is not supported for directory buckets.</p>
875    /// </note>
876    pub fn set_sse_customer_algorithm(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
877        self.sse_customer_algorithm = input;
878        self
879    }
880    /// <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>
881    /// <p>This functionality is not supported for directory buckets.</p>
882    /// </note>
883    pub fn get_sse_customer_algorithm(&self) -> &::std::option::Option<::std::string::String> {
884        &self.sse_customer_algorithm
885    }
886    /// <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>
887    /// <p>This functionality is not supported for directory buckets.</p>
888    /// </note>
889    pub fn sse_customer_key_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
890        self.sse_customer_key_md5 = ::std::option::Option::Some(input.into());
891        self
892    }
893    /// <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>
894    /// <p>This functionality is not supported for directory buckets.</p>
895    /// </note>
896    pub fn set_sse_customer_key_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
897        self.sse_customer_key_md5 = input;
898        self
899    }
900    /// <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>
901    /// <p>This functionality is not supported for directory buckets.</p>
902    /// </note>
903    pub fn get_sse_customer_key_md5(&self) -> &::std::option::Option<::std::string::String> {
904        &self.sse_customer_key_md5
905    }
906    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
907    pub fn ssekms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
908        self.ssekms_key_id = ::std::option::Option::Some(input.into());
909        self
910    }
911    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
912    pub fn set_ssekms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
913        self.ssekms_key_id = input;
914        self
915    }
916    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
917    pub fn get_ssekms_key_id(&self) -> &::std::option::Option<::std::string::String> {
918        &self.ssekms_key_id
919    }
920    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
921    pub fn bucket_key_enabled(mut self, input: bool) -> Self {
922        self.bucket_key_enabled = ::std::option::Option::Some(input);
923        self
924    }
925    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
926    pub fn set_bucket_key_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
927        self.bucket_key_enabled = input;
928        self
929    }
930    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
931    pub fn get_bucket_key_enabled(&self) -> &::std::option::Option<bool> {
932        &self.bucket_key_enabled
933    }
934    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
935    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
936    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
937    /// </note>
938    pub fn storage_class(mut self, input: crate::types::StorageClass) -> Self {
939        self.storage_class = ::std::option::Option::Some(input);
940        self
941    }
942    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
943    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
944    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
945    /// </note>
946    pub fn set_storage_class(mut self, input: ::std::option::Option<crate::types::StorageClass>) -> Self {
947        self.storage_class = input;
948        self
949    }
950    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
951    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
952    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
953    /// </note>
954    pub fn get_storage_class(&self) -> &::std::option::Option<crate::types::StorageClass> {
955        &self.storage_class
956    }
957    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
958    /// <p>This functionality is not supported for directory buckets.</p>
959    /// </note>
960    pub fn request_charged(mut self, input: crate::types::RequestCharged) -> Self {
961        self.request_charged = ::std::option::Option::Some(input);
962        self
963    }
964    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
965    /// <p>This functionality is not supported for directory buckets.</p>
966    /// </note>
967    pub fn set_request_charged(mut self, input: ::std::option::Option<crate::types::RequestCharged>) -> Self {
968        self.request_charged = input;
969        self
970    }
971    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
972    /// <p>This functionality is not supported for directory buckets.</p>
973    /// </note>
974    pub fn get_request_charged(&self) -> &::std::option::Option<crate::types::RequestCharged> {
975        &self.request_charged
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 replication_status(mut self, input: crate::types::ReplicationStatus) -> Self {
992        self.replication_status = ::std::option::Option::Some(input);
993        self
994    }
995    /// <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>
996    /// <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>
997    /// <ul>
998    /// <li>
999    /// <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>
1000    /// <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>
1001    /// <li>
1002    /// <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>
1003    /// <li>
1004    /// <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>
1005    /// </ul>
1006    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
1007    /// <p>This functionality is not supported for directory buckets.</p>
1008    /// </note>
1009    pub fn set_replication_status(mut self, input: ::std::option::Option<crate::types::ReplicationStatus>) -> Self {
1010        self.replication_status = input;
1011        self
1012    }
1013    /// <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>
1014    /// <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>
1015    /// <ul>
1016    /// <li>
1017    /// <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>
1018    /// <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>
1019    /// <li>
1020    /// <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>
1021    /// <li>
1022    /// <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>
1023    /// </ul>
1024    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
1025    /// <p>This functionality is not supported for directory buckets.</p>
1026    /// </note>
1027    pub fn get_replication_status(&self) -> &::std::option::Option<crate::types::ReplicationStatus> {
1028        &self.replication_status
1029    }
1030    /// <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>
1031    pub fn parts_count(mut self, input: i32) -> Self {
1032        self.parts_count = ::std::option::Option::Some(input);
1033        self
1034    }
1035    /// <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>
1036    pub fn set_parts_count(mut self, input: ::std::option::Option<i32>) -> Self {
1037        self.parts_count = input;
1038        self
1039    }
1040    /// <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>
1041    pub fn get_parts_count(&self) -> &::std::option::Option<i32> {
1042        &self.parts_count
1043    }
1044    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
1045    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
1046    /// <p>This functionality is not supported for directory buckets.</p>
1047    /// </note>
1048    pub fn tag_count(mut self, input: i32) -> Self {
1049        self.tag_count = ::std::option::Option::Some(input);
1050        self
1051    }
1052    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
1053    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
1054    /// <p>This functionality is not supported for directory buckets.</p>
1055    /// </note>
1056    pub fn set_tag_count(mut self, input: ::std::option::Option<i32>) -> Self {
1057        self.tag_count = input;
1058        self
1059    }
1060    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
1061    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
1062    /// <p>This functionality is not supported for directory buckets.</p>
1063    /// </note>
1064    pub fn get_tag_count(&self) -> &::std::option::Option<i32> {
1065        &self.tag_count
1066    }
1067    /// <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>
1068    /// <p>This functionality is not supported for directory buckets.</p>
1069    /// </note>
1070    pub fn object_lock_mode(mut self, input: crate::types::ObjectLockMode) -> Self {
1071        self.object_lock_mode = ::std::option::Option::Some(input);
1072        self
1073    }
1074    /// <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>
1075    /// <p>This functionality is not supported for directory buckets.</p>
1076    /// </note>
1077    pub fn set_object_lock_mode(mut self, input: ::std::option::Option<crate::types::ObjectLockMode>) -> Self {
1078        self.object_lock_mode = input;
1079        self
1080    }
1081    /// <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>
1082    /// <p>This functionality is not supported for directory buckets.</p>
1083    /// </note>
1084    pub fn get_object_lock_mode(&self) -> &::std::option::Option<crate::types::ObjectLockMode> {
1085        &self.object_lock_mode
1086    }
1087    /// <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>
1088    /// <p>This functionality is not supported for directory buckets.</p>
1089    /// </note>
1090    pub fn object_lock_retain_until_date(mut self, input: ::aws_smithy_types::DateTime) -> Self {
1091        self.object_lock_retain_until_date = ::std::option::Option::Some(input);
1092        self
1093    }
1094    /// <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>
1095    /// <p>This functionality is not supported for directory buckets.</p>
1096    /// </note>
1097    pub fn set_object_lock_retain_until_date(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
1098        self.object_lock_retain_until_date = input;
1099        self
1100    }
1101    /// <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>
1102    /// <p>This functionality is not supported for directory buckets.</p>
1103    /// </note>
1104    pub fn get_object_lock_retain_until_date(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
1105        &self.object_lock_retain_until_date
1106    }
1107    /// <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>
1108    /// <p>This functionality is not supported for directory buckets.</p>
1109    /// </note>
1110    pub fn object_lock_legal_hold_status(mut self, input: crate::types::ObjectLockLegalHoldStatus) -> Self {
1111        self.object_lock_legal_hold_status = ::std::option::Option::Some(input);
1112        self
1113    }
1114    /// <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>
1115    /// <p>This functionality is not supported for directory buckets.</p>
1116    /// </note>
1117    pub fn set_object_lock_legal_hold_status(mut self, input: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>) -> Self {
1118        self.object_lock_legal_hold_status = input;
1119        self
1120    }
1121    /// <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>
1122    /// <p>This functionality is not supported for directory buckets.</p>
1123    /// </note>
1124    pub fn get_object_lock_legal_hold_status(&self) -> &::std::option::Option<crate::types::ObjectLockLegalHoldStatus> {
1125        &self.object_lock_legal_hold_status
1126    }
1127    /// <p>The date and time at which the object is no longer cacheable.</p>
1128    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
1129    pub fn expires(mut self, input: ::aws_smithy_types::DateTime) -> Self {
1130        self.expires = ::std::option::Option::Some(input);
1131        self
1132    }
1133    /// <p>The date and time at which the object is no longer cacheable.</p>
1134    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
1135    pub fn set_expires(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
1136        self.expires = input;
1137        self
1138    }
1139    /// <p>The date and time at which the object is no longer cacheable.</p>
1140    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
1141    pub fn get_expires(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
1142        &self.expires
1143    }
1144    /// <p>The date and time at which the object is no longer cacheable.</p>
1145    pub fn expires_string(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1146        self.expires_string = ::std::option::Option::Some(input.into());
1147        self
1148    }
1149    /// <p>The date and time at which the object is no longer cacheable.</p>
1150    pub fn set_expires_string(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1151        self.expires_string = input;
1152        self
1153    }
1154    /// <p>The date and time at which the object is no longer cacheable.</p>
1155    pub fn get_expires_string(&self) -> &::std::option::Option<::std::string::String> {
1156        &self.expires_string
1157    }
1158    pub(crate) fn _extended_request_id(mut self, extended_request_id: impl Into<String>) -> Self {
1159        self._extended_request_id = Some(extended_request_id.into());
1160        self
1161    }
1162
1163    pub(crate) fn _set_extended_request_id(&mut self, extended_request_id: Option<String>) -> &mut Self {
1164        self._extended_request_id = extended_request_id;
1165        self
1166    }
1167    pub(crate) fn _request_id(mut self, request_id: impl Into<String>) -> Self {
1168        self._request_id = Some(request_id.into());
1169        self
1170    }
1171
1172    pub(crate) fn _set_request_id(&mut self, request_id: Option<String>) -> &mut Self {
1173        self._request_id = request_id;
1174        self
1175    }
1176    /// Consumes the builder and constructs a [`HeadObjectOutput`](crate::operation::head_object::HeadObjectOutput).
1177    pub fn build(self) -> crate::operation::head_object::HeadObjectOutput {
1178        crate::operation::head_object::HeadObjectOutput {
1179            delete_marker: self.delete_marker,
1180            accept_ranges: self.accept_ranges,
1181            expiration: self.expiration,
1182            restore: self.restore,
1183            archive_status: self.archive_status,
1184            last_modified: self.last_modified,
1185            content_length: self.content_length,
1186            checksum_crc32: self.checksum_crc32,
1187            checksum_crc32_c: self.checksum_crc32_c,
1188            checksum_crc64_nvme: self.checksum_crc64_nvme,
1189            checksum_sha1: self.checksum_sha1,
1190            checksum_sha256: self.checksum_sha256,
1191            checksum_type: self.checksum_type,
1192            e_tag: self.e_tag,
1193            missing_meta: self.missing_meta,
1194            version_id: self.version_id,
1195            cache_control: self.cache_control,
1196            content_disposition: self.content_disposition,
1197            content_encoding: self.content_encoding,
1198            content_language: self.content_language,
1199            content_type: self.content_type,
1200            content_range: self.content_range,
1201            website_redirect_location: self.website_redirect_location,
1202            server_side_encryption: self.server_side_encryption,
1203            metadata: self.metadata,
1204            sse_customer_algorithm: self.sse_customer_algorithm,
1205            sse_customer_key_md5: self.sse_customer_key_md5,
1206            ssekms_key_id: self.ssekms_key_id,
1207            bucket_key_enabled: self.bucket_key_enabled,
1208            storage_class: self.storage_class,
1209            request_charged: self.request_charged,
1210            replication_status: self.replication_status,
1211            parts_count: self.parts_count,
1212            tag_count: self.tag_count,
1213            object_lock_mode: self.object_lock_mode,
1214            object_lock_retain_until_date: self.object_lock_retain_until_date,
1215            object_lock_legal_hold_status: self.object_lock_legal_hold_status,
1216            expires: self.expires,
1217            expires_string: self.expires_string,
1218            _extended_request_id: self._extended_request_id,
1219            _request_id: self._request_id,
1220        }
1221    }
1222}
1223impl ::std::fmt::Debug for HeadObjectOutputBuilder {
1224    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1225        let mut formatter = f.debug_struct("HeadObjectOutputBuilder");
1226        formatter.field("delete_marker", &self.delete_marker);
1227        formatter.field("accept_ranges", &self.accept_ranges);
1228        formatter.field("expiration", &self.expiration);
1229        formatter.field("restore", &self.restore);
1230        formatter.field("archive_status", &self.archive_status);
1231        formatter.field("last_modified", &self.last_modified);
1232        formatter.field("content_length", &self.content_length);
1233        formatter.field("checksum_crc32", &self.checksum_crc32);
1234        formatter.field("checksum_crc32_c", &self.checksum_crc32_c);
1235        formatter.field("checksum_crc64_nvme", &self.checksum_crc64_nvme);
1236        formatter.field("checksum_sha1", &self.checksum_sha1);
1237        formatter.field("checksum_sha256", &self.checksum_sha256);
1238        formatter.field("checksum_type", &self.checksum_type);
1239        formatter.field("e_tag", &self.e_tag);
1240        formatter.field("missing_meta", &self.missing_meta);
1241        formatter.field("version_id", &self.version_id);
1242        formatter.field("cache_control", &self.cache_control);
1243        formatter.field("content_disposition", &self.content_disposition);
1244        formatter.field("content_encoding", &self.content_encoding);
1245        formatter.field("content_language", &self.content_language);
1246        formatter.field("content_type", &self.content_type);
1247        formatter.field("content_range", &self.content_range);
1248        formatter.field("website_redirect_location", &self.website_redirect_location);
1249        formatter.field("server_side_encryption", &self.server_side_encryption);
1250        formatter.field("metadata", &self.metadata);
1251        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
1252        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
1253        formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
1254        formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
1255        formatter.field("storage_class", &self.storage_class);
1256        formatter.field("request_charged", &self.request_charged);
1257        formatter.field("replication_status", &self.replication_status);
1258        formatter.field("parts_count", &self.parts_count);
1259        formatter.field("tag_count", &self.tag_count);
1260        formatter.field("object_lock_mode", &self.object_lock_mode);
1261        formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
1262        formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
1263        formatter.field("expires", &self.expires);
1264        formatter.field("expires_string", &self.expires_string);
1265        formatter.field("_extended_request_id", &self._extended_request_id);
1266        formatter.field("_request_id", &self._request_id);
1267        formatter.finish()
1268    }
1269}