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