aws_sdk_s3/operation/head_object/
_head_object_output.rs

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