Skip to main content

aws_sdk_s3/operation/head_object/
_head_object_output.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
5pub struct HeadObjectOutput {
6    /// <p>Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response.</p><note>
7    /// <p>This functionality is not supported for directory buckets.</p>
8    /// </note>
9    pub delete_marker: ::std::option::Option<bool>,
10    /// <p>Indicates that a range of bytes was specified.</p>
11    pub accept_ranges: ::std::option::Option<::std::string::String>,
12    /// <p>If the object expiration is configured (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html"> <code>PutBucketLifecycleConfiguration</code> </a>), the response includes this header. It includes the <code>expiry-date</code> and <code>rule-id</code> key-value pairs providing object expiration information. The value of the <code>rule-id</code> is URL-encoded.</p><note>
13    /// <p>Object expiration information is not returned in directory buckets and this header returns the value "<code>NotImplemented</code>" in all responses for directory buckets.</p>
14    /// </note>
15    pub expiration: ::std::option::Option<::std::string::String>,
16    /// <p>If the object is an archived object (an object whose storage class is GLACIER), the response includes this header if either the archive restoration is in progress (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a> or an archive copy is already restored.</p>
17    /// <p>If an archive copy is already restored, the header value indicates when Amazon S3 is scheduled to delete the object copy. For example:</p>
18    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
19    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
20    /// <p>For more information about archiving objects, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning Objects: General Considerations</a>.</p><note>
21    /// <p>This functionality is not supported for directory buckets. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
22    /// </note>
23    pub restore: ::std::option::Option<::std::string::String>,
24    /// <p>The archive state of the head object.</p><note>
25    /// <p>This functionality is not supported for directory buckets.</p>
26    /// </note>
27    pub archive_status: ::std::option::Option<crate::types::ArchiveStatus>,
28    /// <p>Date and time when the object was last modified.</p>
29    pub last_modified: ::std::option::Option<::aws_smithy_types::DateTime>,
30    /// <p>Size of the body in bytes.</p>
31    pub content_length: ::std::option::Option<i64>,
32    /// <p>The Base64 encoded, 32-bit <code>CRC32 checksum</code> of the object. This checksum is only 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 checksum is only present if the checksum 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 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>
41    pub checksum_sha256: ::std::option::Option<::std::string::String>,
42    /// <p>The Base64 encoded, 512-bit <code>SHA512</code> digest 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>
43    pub checksum_sha512: ::std::option::Option<::std::string::String>,
44    /// <p>The Base64 encoded, 128-bit <code>MD5</code> digest 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>
45    pub checksum_md5: ::std::option::Option<::std::string::String>,
46    /// <p>The Base64 encoded, 64-bit <code>XXHASH64</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>
47    pub checksum_xxhash64: ::std::option::Option<::std::string::String>,
48    /// <p>The Base64 encoded, 64-bit <code>XXHASH3</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>
49    pub checksum_xxhash3: ::std::option::Option<::std::string::String>,
50    /// <p>The Base64 encoded, 128-bit <code>XXHASH128</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>
51    pub checksum_xxhash128: ::std::option::Option<::std::string::String>,
52    /// <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>
53    pub checksum_type: ::std::option::Option<crate::types::ChecksumType>,
54    /// <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>
55    pub e_tag: ::std::option::Option<::std::string::String>,
56    /// <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>
57    /// <p>This functionality is not supported for directory buckets.</p>
58    /// </note>
59    pub missing_meta: ::std::option::Option<i32>,
60    /// <p>Version ID of the object.</p><note>
61    /// <p>This functionality is not supported for directory buckets.</p>
62    /// </note>
63    pub version_id: ::std::option::Option<::std::string::String>,
64    /// <p>Specifies caching behavior along the request/reply chain.</p>
65    pub cache_control: ::std::option::Option<::std::string::String>,
66    /// <p>Specifies presentational information for the object.</p>
67    pub content_disposition: ::std::option::Option<::std::string::String>,
68    /// <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>
69    pub content_encoding: ::std::option::Option<::std::string::String>,
70    /// <p>The language the content is in.</p>
71    pub content_language: ::std::option::Option<::std::string::String>,
72    /// <p>A standard MIME type describing the format of the object data.</p>
73    pub content_type: ::std::option::Option<::std::string::String>,
74    /// <p>The portion of the object returned in the response for a <code>GET</code> request.</p>
75    pub content_range: ::std::option::Option<::std::string::String>,
76    /// <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>
77    /// <p>This functionality is not supported for directory buckets.</p>
78    /// </note>
79    pub website_redirect_location: ::std::option::Option<::std::string::String>,
80    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.</p><note>
81    /// <p>When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side encryption option is <code>aws:fsx</code>.</p>
82    /// </note>
83    pub server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
84    /// <p>A map of metadata to store with the object in S3.</p>
85    pub metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
86    /// <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>
87    /// <p>This functionality is not supported for directory buckets.</p>
88    /// </note>
89    pub sse_customer_algorithm: ::std::option::Option<::std::string::String>,
90    /// <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>
91    /// <p>This functionality is not supported for directory buckets.</p>
92    /// </note>
93    pub sse_customer_key_md5: ::std::option::Option<::std::string::String>,
94    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
95    pub ssekms_key_id: ::std::option::Option<::std::string::String>,
96    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
97    pub bucket_key_enabled: ::std::option::Option<bool>,
98    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
99    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
100    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
101    /// </note>
102    pub storage_class: ::std::option::Option<crate::types::StorageClass>,
103    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
104    /// <p>This functionality is not supported for directory buckets.</p>
105    /// </note>
106    pub request_charged: ::std::option::Option<crate::types::RequestCharged>,
107    /// <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>
108    /// <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>
109    /// <ul>
110    /// <li>
111    /// <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>
112    /// <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>
113    /// <li>
114    /// <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>
115    /// <li>
116    /// <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>
117    /// </ul>
118    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
119    /// <p>This functionality is not supported for directory buckets.</p>
120    /// </note>
121    pub replication_status: ::std::option::Option<crate::types::ReplicationStatus>,
122    /// <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>
123    pub parts_count: ::std::option::Option<i32>,
124    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
125    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
126    /// <p>This functionality is not supported for directory buckets.</p>
127    /// </note>
128    pub tag_count: ::std::option::Option<i32>,
129    /// <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>
130    /// <p>This functionality is not supported for directory buckets.</p>
131    /// </note>
132    pub object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
133    /// <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>
134    /// <p>This functionality is not supported for directory buckets.</p>
135    /// </note>
136    pub object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
137    /// <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>
138    /// <p>This functionality is not supported for directory buckets.</p>
139    /// </note>
140    pub object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
141    /// <p>The event hold status for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
142    /// <p>This functionality is not supported for directory buckets.</p>
143    /// </note>
144    pub object_lock_event_hold: ::std::option::Option<crate::types::ObjectLockEventHold>,
145    /// <p>The event hold duration in days for this object. Only returned when the event hold is enabled.</p><note>
146    /// <p>This functionality is not supported for directory buckets.</p>
147    /// </note>
148    pub object_lock_event_hold_duration_days: ::std::option::Option<i32>,
149    /// <p>The event hold duration in years for this object. Only returned when the event hold is enabled.</p><note>
150    /// <p>This functionality is not supported for directory buckets.</p>
151    /// </note>
152    pub object_lock_event_hold_duration_years: ::std::option::Option<i32>,
153    /// <p>The date and time at which the object is no longer cacheable.</p>
154    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
155    pub expires: ::std::option::Option<::aws_smithy_types::DateTime>,
156    /// <p>The date and time at which the object is no longer cacheable.</p>
157    pub expires_string: ::std::option::Option<::std::string::String>,
158    _extended_request_id: Option<String>,
159    _request_id: Option<String>,
160}
161impl HeadObjectOutput {
162    /// <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>
163    /// <p>This functionality is not supported for directory buckets.</p>
164    /// </note>
165    pub fn delete_marker(&self) -> ::std::option::Option<bool> {
166        self.delete_marker
167    }
168    /// <p>Indicates that a range of bytes was specified.</p>
169    pub fn accept_ranges(&self) -> ::std::option::Option<&str> {
170        self.accept_ranges.as_deref()
171    }
172    /// <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>
173    /// <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>
174    /// </note>
175    pub fn expiration(&self) -> ::std::option::Option<&str> {
176        self.expiration.as_deref()
177    }
178    /// <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>
179    /// <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>
180    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
181    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
182    /// <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>
183    /// <p>This functionality is not supported for directory buckets. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
184    /// </note>
185    pub fn restore(&self) -> ::std::option::Option<&str> {
186        self.restore.as_deref()
187    }
188    /// <p>The archive state of the head object.</p><note>
189    /// <p>This functionality is not supported for directory buckets.</p>
190    /// </note>
191    pub fn archive_status(&self) -> ::std::option::Option<&crate::types::ArchiveStatus> {
192        self.archive_status.as_ref()
193    }
194    /// <p>Date and time when the object was last modified.</p>
195    pub fn last_modified(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
196        self.last_modified.as_ref()
197    }
198    /// <p>Size of the body in bytes.</p>
199    pub fn content_length(&self) -> ::std::option::Option<i64> {
200        self.content_length
201    }
202    /// <p>The Base64 encoded, 32-bit <code>CRC32 checksum</code> 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>
203    pub fn checksum_crc32(&self) -> ::std::option::Option<&str> {
204        self.checksum_crc32.as_deref()
205    }
206    /// <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>
207    pub fn checksum_crc32_c(&self) -> ::std::option::Option<&str> {
208        self.checksum_crc32_c.as_deref()
209    }
210    /// <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>
211    pub fn checksum_crc64_nvme(&self) -> ::std::option::Option<&str> {
212        self.checksum_crc64_nvme.as_deref()
213    }
214    /// <p>The Base64 encoded, 160-bit <code>SHA1</code> digest of the object. This checksum is only present if the checksum 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>
215    pub fn checksum_sha1(&self) -> ::std::option::Option<&str> {
216        self.checksum_sha1.as_deref()
217    }
218    /// <p>The Base64 encoded, 256-bit <code>SHA256</code> digest 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>
219    pub fn checksum_sha256(&self) -> ::std::option::Option<&str> {
220        self.checksum_sha256.as_deref()
221    }
222    /// <p>The Base64 encoded, 512-bit <code>SHA512</code> digest 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>
223    pub fn checksum_sha512(&self) -> ::std::option::Option<&str> {
224        self.checksum_sha512.as_deref()
225    }
226    /// <p>The Base64 encoded, 128-bit <code>MD5</code> digest 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>
227    pub fn checksum_md5(&self) -> ::std::option::Option<&str> {
228        self.checksum_md5.as_deref()
229    }
230    /// <p>The Base64 encoded, 64-bit <code>XXHASH64</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>
231    pub fn checksum_xxhash64(&self) -> ::std::option::Option<&str> {
232        self.checksum_xxhash64.as_deref()
233    }
234    /// <p>The Base64 encoded, 64-bit <code>XXHASH3</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>
235    pub fn checksum_xxhash3(&self) -> ::std::option::Option<&str> {
236        self.checksum_xxhash3.as_deref()
237    }
238    /// <p>The Base64 encoded, 128-bit <code>XXHASH128</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>
239    pub fn checksum_xxhash128(&self) -> ::std::option::Option<&str> {
240        self.checksum_xxhash128.as_deref()
241    }
242    /// <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>
243    pub fn checksum_type(&self) -> ::std::option::Option<&crate::types::ChecksumType> {
244        self.checksum_type.as_ref()
245    }
246    /// <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>
247    pub fn e_tag(&self) -> ::std::option::Option<&str> {
248        self.e_tag.as_deref()
249    }
250    /// <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>
251    /// <p>This functionality is not supported for directory buckets.</p>
252    /// </note>
253    pub fn missing_meta(&self) -> ::std::option::Option<i32> {
254        self.missing_meta
255    }
256    /// <p>Version ID of the object.</p><note>
257    /// <p>This functionality is not supported for directory buckets.</p>
258    /// </note>
259    pub fn version_id(&self) -> ::std::option::Option<&str> {
260        self.version_id.as_deref()
261    }
262    /// <p>Specifies caching behavior along the request/reply chain.</p>
263    pub fn cache_control(&self) -> ::std::option::Option<&str> {
264        self.cache_control.as_deref()
265    }
266    /// <p>Specifies presentational information for the object.</p>
267    pub fn content_disposition(&self) -> ::std::option::Option<&str> {
268        self.content_disposition.as_deref()
269    }
270    /// <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>
271    pub fn content_encoding(&self) -> ::std::option::Option<&str> {
272        self.content_encoding.as_deref()
273    }
274    /// <p>The language the content is in.</p>
275    pub fn content_language(&self) -> ::std::option::Option<&str> {
276        self.content_language.as_deref()
277    }
278    /// <p>A standard MIME type describing the format of the object data.</p>
279    pub fn content_type(&self) -> ::std::option::Option<&str> {
280        self.content_type.as_deref()
281    }
282    /// <p>The portion of the object returned in the response for a <code>GET</code> request.</p>
283    pub fn content_range(&self) -> ::std::option::Option<&str> {
284        self.content_range.as_deref()
285    }
286    /// <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>
287    /// <p>This functionality is not supported for directory buckets.</p>
288    /// </note>
289    pub fn website_redirect_location(&self) -> ::std::option::Option<&str> {
290        self.website_redirect_location.as_deref()
291    }
292    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.</p><note>
293    /// <p>When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side encryption option is <code>aws:fsx</code>.</p>
294    /// </note>
295    pub fn server_side_encryption(&self) -> ::std::option::Option<&crate::types::ServerSideEncryption> {
296        self.server_side_encryption.as_ref()
297    }
298    /// <p>A map of metadata to store with the object in S3.</p>
299    pub fn metadata(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
300        self.metadata.as_ref()
301    }
302    /// <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>
303    /// <p>This functionality is not supported for directory buckets.</p>
304    /// </note>
305    pub fn sse_customer_algorithm(&self) -> ::std::option::Option<&str> {
306        self.sse_customer_algorithm.as_deref()
307    }
308    /// <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>
309    /// <p>This functionality is not supported for directory buckets.</p>
310    /// </note>
311    pub fn sse_customer_key_md5(&self) -> ::std::option::Option<&str> {
312        self.sse_customer_key_md5.as_deref()
313    }
314    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
315    pub fn ssekms_key_id(&self) -> ::std::option::Option<&str> {
316        self.ssekms_key_id.as_deref()
317    }
318    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
319    pub fn bucket_key_enabled(&self) -> ::std::option::Option<bool> {
320        self.bucket_key_enabled
321    }
322    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
323    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
324    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
325    /// </note>
326    pub fn storage_class(&self) -> ::std::option::Option<&crate::types::StorageClass> {
327        self.storage_class.as_ref()
328    }
329    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
330    /// <p>This functionality is not supported for directory buckets.</p>
331    /// </note>
332    pub fn request_charged(&self) -> ::std::option::Option<&crate::types::RequestCharged> {
333        self.request_charged.as_ref()
334    }
335    /// <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>
336    /// <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>
337    /// <ul>
338    /// <li>
339    /// <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>
340    /// <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>
341    /// <li>
342    /// <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>
343    /// <li>
344    /// <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>
345    /// </ul>
346    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
347    /// <p>This functionality is not supported for directory buckets.</p>
348    /// </note>
349    pub fn replication_status(&self) -> ::std::option::Option<&crate::types::ReplicationStatus> {
350        self.replication_status.as_ref()
351    }
352    /// <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>
353    pub fn parts_count(&self) -> ::std::option::Option<i32> {
354        self.parts_count
355    }
356    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
357    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
358    /// <p>This functionality is not supported for directory buckets.</p>
359    /// </note>
360    pub fn tag_count(&self) -> ::std::option::Option<i32> {
361        self.tag_count
362    }
363    /// <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>
364    /// <p>This functionality is not supported for directory buckets.</p>
365    /// </note>
366    pub fn object_lock_mode(&self) -> ::std::option::Option<&crate::types::ObjectLockMode> {
367        self.object_lock_mode.as_ref()
368    }
369    /// <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>
370    /// <p>This functionality is not supported for directory buckets.</p>
371    /// </note>
372    pub fn object_lock_retain_until_date(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
373        self.object_lock_retain_until_date.as_ref()
374    }
375    /// <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>
376    /// <p>This functionality is not supported for directory buckets.</p>
377    /// </note>
378    pub fn object_lock_legal_hold_status(&self) -> ::std::option::Option<&crate::types::ObjectLockLegalHoldStatus> {
379        self.object_lock_legal_hold_status.as_ref()
380    }
381    /// <p>The event hold status for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
382    /// <p>This functionality is not supported for directory buckets.</p>
383    /// </note>
384    pub fn object_lock_event_hold(&self) -> ::std::option::Option<&crate::types::ObjectLockEventHold> {
385        self.object_lock_event_hold.as_ref()
386    }
387    /// <p>The event hold duration in days for this object. Only returned when the event hold is enabled.</p><note>
388    /// <p>This functionality is not supported for directory buckets.</p>
389    /// </note>
390    pub fn object_lock_event_hold_duration_days(&self) -> ::std::option::Option<i32> {
391        self.object_lock_event_hold_duration_days
392    }
393    /// <p>The event hold duration in years for this object. Only returned when the event hold is enabled.</p><note>
394    /// <p>This functionality is not supported for directory buckets.</p>
395    /// </note>
396    pub fn object_lock_event_hold_duration_years(&self) -> ::std::option::Option<i32> {
397        self.object_lock_event_hold_duration_years
398    }
399    /// <p>The date and time at which the object is no longer cacheable.</p>
400    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
401    pub fn expires(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
402        self.expires.as_ref()
403    }
404    /// <p>The date and time at which the object is no longer cacheable.</p>
405    pub fn expires_string(&self) -> ::std::option::Option<&str> {
406        self.expires_string.as_deref()
407    }
408}
409impl ::std::fmt::Debug for HeadObjectOutput {
410    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
411        let mut formatter = f.debug_struct("HeadObjectOutput");
412        formatter.field("delete_marker", &self.delete_marker);
413        formatter.field("accept_ranges", &self.accept_ranges);
414        formatter.field("expiration", &self.expiration);
415        formatter.field("restore", &self.restore);
416        formatter.field("archive_status", &self.archive_status);
417        formatter.field("last_modified", &self.last_modified);
418        formatter.field("content_length", &self.content_length);
419        formatter.field("checksum_crc32", &self.checksum_crc32);
420        formatter.field("checksum_crc32_c", &self.checksum_crc32_c);
421        formatter.field("checksum_crc64_nvme", &self.checksum_crc64_nvme);
422        formatter.field("checksum_sha1", &self.checksum_sha1);
423        formatter.field("checksum_sha256", &self.checksum_sha256);
424        formatter.field("checksum_sha512", &self.checksum_sha512);
425        formatter.field("checksum_md5", &self.checksum_md5);
426        formatter.field("checksum_xxhash64", &self.checksum_xxhash64);
427        formatter.field("checksum_xxhash3", &self.checksum_xxhash3);
428        formatter.field("checksum_xxhash128", &self.checksum_xxhash128);
429        formatter.field("checksum_type", &self.checksum_type);
430        formatter.field("e_tag", &self.e_tag);
431        formatter.field("missing_meta", &self.missing_meta);
432        formatter.field("version_id", &self.version_id);
433        formatter.field("cache_control", &self.cache_control);
434        formatter.field("content_disposition", &self.content_disposition);
435        formatter.field("content_encoding", &self.content_encoding);
436        formatter.field("content_language", &self.content_language);
437        formatter.field("content_type", &self.content_type);
438        formatter.field("content_range", &self.content_range);
439        formatter.field("website_redirect_location", &self.website_redirect_location);
440        formatter.field("server_side_encryption", &self.server_side_encryption);
441        formatter.field("metadata", &self.metadata);
442        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
443        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
444        formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
445        formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
446        formatter.field("storage_class", &self.storage_class);
447        formatter.field("request_charged", &self.request_charged);
448        formatter.field("replication_status", &self.replication_status);
449        formatter.field("parts_count", &self.parts_count);
450        formatter.field("tag_count", &self.tag_count);
451        formatter.field("object_lock_mode", &self.object_lock_mode);
452        formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
453        formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
454        formatter.field("object_lock_event_hold", &self.object_lock_event_hold);
455        formatter.field("object_lock_event_hold_duration_days", &self.object_lock_event_hold_duration_days);
456        formatter.field("object_lock_event_hold_duration_years", &self.object_lock_event_hold_duration_years);
457        formatter.field("expires", &self.expires);
458        formatter.field("expires_string", &self.expires_string);
459        formatter.field("_extended_request_id", &self._extended_request_id);
460        formatter.field("_request_id", &self._request_id);
461        formatter.finish()
462    }
463}
464impl crate::s3_request_id::RequestIdExt for HeadObjectOutput {
465    fn extended_request_id(&self) -> Option<&str> {
466        self._extended_request_id.as_deref()
467    }
468}
469impl ::aws_types::request_id::RequestId for HeadObjectOutput {
470    fn request_id(&self) -> Option<&str> {
471        self._request_id.as_deref()
472    }
473}
474impl HeadObjectOutput {
475    /// Creates a new builder-style object to manufacture [`HeadObjectOutput`](crate::operation::head_object::HeadObjectOutput).
476    pub fn builder() -> crate::operation::head_object::builders::HeadObjectOutputBuilder {
477        crate::operation::head_object::builders::HeadObjectOutputBuilder::default()
478    }
479}
480
481/// A builder for [`HeadObjectOutput`](crate::operation::head_object::HeadObjectOutput).
482#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
483#[non_exhaustive]
484pub struct HeadObjectOutputBuilder {
485    pub(crate) delete_marker: ::std::option::Option<bool>,
486    pub(crate) accept_ranges: ::std::option::Option<::std::string::String>,
487    pub(crate) expiration: ::std::option::Option<::std::string::String>,
488    pub(crate) restore: ::std::option::Option<::std::string::String>,
489    pub(crate) archive_status: ::std::option::Option<crate::types::ArchiveStatus>,
490    pub(crate) last_modified: ::std::option::Option<::aws_smithy_types::DateTime>,
491    pub(crate) content_length: ::std::option::Option<i64>,
492    pub(crate) checksum_crc32: ::std::option::Option<::std::string::String>,
493    pub(crate) checksum_crc32_c: ::std::option::Option<::std::string::String>,
494    pub(crate) checksum_crc64_nvme: ::std::option::Option<::std::string::String>,
495    pub(crate) checksum_sha1: ::std::option::Option<::std::string::String>,
496    pub(crate) checksum_sha256: ::std::option::Option<::std::string::String>,
497    pub(crate) checksum_sha512: ::std::option::Option<::std::string::String>,
498    pub(crate) checksum_md5: ::std::option::Option<::std::string::String>,
499    pub(crate) checksum_xxhash64: ::std::option::Option<::std::string::String>,
500    pub(crate) checksum_xxhash3: ::std::option::Option<::std::string::String>,
501    pub(crate) checksum_xxhash128: ::std::option::Option<::std::string::String>,
502    pub(crate) checksum_type: ::std::option::Option<crate::types::ChecksumType>,
503    pub(crate) e_tag: ::std::option::Option<::std::string::String>,
504    pub(crate) missing_meta: ::std::option::Option<i32>,
505    pub(crate) version_id: ::std::option::Option<::std::string::String>,
506    pub(crate) cache_control: ::std::option::Option<::std::string::String>,
507    pub(crate) content_disposition: ::std::option::Option<::std::string::String>,
508    pub(crate) content_encoding: ::std::option::Option<::std::string::String>,
509    pub(crate) content_language: ::std::option::Option<::std::string::String>,
510    pub(crate) content_type: ::std::option::Option<::std::string::String>,
511    pub(crate) content_range: ::std::option::Option<::std::string::String>,
512    pub(crate) website_redirect_location: ::std::option::Option<::std::string::String>,
513    pub(crate) server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
514    pub(crate) metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
515    pub(crate) sse_customer_algorithm: ::std::option::Option<::std::string::String>,
516    pub(crate) sse_customer_key_md5: ::std::option::Option<::std::string::String>,
517    pub(crate) ssekms_key_id: ::std::option::Option<::std::string::String>,
518    pub(crate) bucket_key_enabled: ::std::option::Option<bool>,
519    pub(crate) storage_class: ::std::option::Option<crate::types::StorageClass>,
520    pub(crate) request_charged: ::std::option::Option<crate::types::RequestCharged>,
521    pub(crate) replication_status: ::std::option::Option<crate::types::ReplicationStatus>,
522    pub(crate) parts_count: ::std::option::Option<i32>,
523    pub(crate) tag_count: ::std::option::Option<i32>,
524    pub(crate) object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
525    pub(crate) object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
526    pub(crate) object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
527    pub(crate) object_lock_event_hold: ::std::option::Option<crate::types::ObjectLockEventHold>,
528    pub(crate) object_lock_event_hold_duration_days: ::std::option::Option<i32>,
529    pub(crate) object_lock_event_hold_duration_years: ::std::option::Option<i32>,
530    pub(crate) expires: ::std::option::Option<::aws_smithy_types::DateTime>,
531    pub(crate) expires_string: ::std::option::Option<::std::string::String>,
532    _extended_request_id: Option<String>,
533    _request_id: Option<String>,
534}
535impl HeadObjectOutputBuilder {
536    /// <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>
537    /// <p>This functionality is not supported for directory buckets.</p>
538    /// </note>
539    pub fn delete_marker(mut self, input: bool) -> Self {
540        self.delete_marker = ::std::option::Option::Some(input);
541        self
542    }
543    /// <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>
544    /// <p>This functionality is not supported for directory buckets.</p>
545    /// </note>
546    pub fn set_delete_marker(mut self, input: ::std::option::Option<bool>) -> Self {
547        self.delete_marker = input;
548        self
549    }
550    /// <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>
551    /// <p>This functionality is not supported for directory buckets.</p>
552    /// </note>
553    pub fn get_delete_marker(&self) -> &::std::option::Option<bool> {
554        &self.delete_marker
555    }
556    /// <p>Indicates that a range of bytes was specified.</p>
557    pub fn accept_ranges(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
558        self.accept_ranges = ::std::option::Option::Some(input.into());
559        self
560    }
561    /// <p>Indicates that a range of bytes was specified.</p>
562    pub fn set_accept_ranges(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
563        self.accept_ranges = input;
564        self
565    }
566    /// <p>Indicates that a range of bytes was specified.</p>
567    pub fn get_accept_ranges(&self) -> &::std::option::Option<::std::string::String> {
568        &self.accept_ranges
569    }
570    /// <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>
571    /// <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>
572    /// </note>
573    pub fn expiration(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
574        self.expiration = ::std::option::Option::Some(input.into());
575        self
576    }
577    /// <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>
578    /// <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>
579    /// </note>
580    pub fn set_expiration(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
581        self.expiration = input;
582        self
583    }
584    /// <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>
585    /// <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>
586    /// </note>
587    pub fn get_expiration(&self) -> &::std::option::Option<::std::string::String> {
588        &self.expiration
589    }
590    /// <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>
591    /// <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>
592    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
593    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
594    /// <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>
595    /// <p>This functionality is not supported for directory buckets. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
596    /// </note>
597    pub fn restore(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
598        self.restore = ::std::option::Option::Some(input.into());
599        self
600    }
601    /// <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>
602    /// <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>
603    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
604    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
605    /// <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>
606    /// <p>This functionality is not supported for directory buckets. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
607    /// </note>
608    pub fn set_restore(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
609        self.restore = input;
610        self
611    }
612    /// <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>
613    /// <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>
614    /// <p><code>x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"</code></p>
615    /// <p>If the object restoration is in progress, the header returns the value <code>ongoing-request="true"</code>.</p>
616    /// <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>
617    /// <p>This functionality is not supported for directory buckets. Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
618    /// </note>
619    pub fn get_restore(&self) -> &::std::option::Option<::std::string::String> {
620        &self.restore
621    }
622    /// <p>The archive state of the head object.</p><note>
623    /// <p>This functionality is not supported for directory buckets.</p>
624    /// </note>
625    pub fn archive_status(mut self, input: crate::types::ArchiveStatus) -> Self {
626        self.archive_status = ::std::option::Option::Some(input);
627        self
628    }
629    /// <p>The archive state of the head object.</p><note>
630    /// <p>This functionality is not supported for directory buckets.</p>
631    /// </note>
632    pub fn set_archive_status(mut self, input: ::std::option::Option<crate::types::ArchiveStatus>) -> Self {
633        self.archive_status = input;
634        self
635    }
636    /// <p>The archive state of the head object.</p><note>
637    /// <p>This functionality is not supported for directory buckets.</p>
638    /// </note>
639    pub fn get_archive_status(&self) -> &::std::option::Option<crate::types::ArchiveStatus> {
640        &self.archive_status
641    }
642    /// <p>Date and time when the object was last modified.</p>
643    pub fn last_modified(mut self, input: ::aws_smithy_types::DateTime) -> Self {
644        self.last_modified = ::std::option::Option::Some(input);
645        self
646    }
647    /// <p>Date and time when the object was last modified.</p>
648    pub fn set_last_modified(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
649        self.last_modified = input;
650        self
651    }
652    /// <p>Date and time when the object was last modified.</p>
653    pub fn get_last_modified(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
654        &self.last_modified
655    }
656    /// <p>Size of the body in bytes.</p>
657    pub fn content_length(mut self, input: i64) -> Self {
658        self.content_length = ::std::option::Option::Some(input);
659        self
660    }
661    /// <p>Size of the body in bytes.</p>
662    pub fn set_content_length(mut self, input: ::std::option::Option<i64>) -> Self {
663        self.content_length = input;
664        self
665    }
666    /// <p>Size of the body in bytes.</p>
667    pub fn get_content_length(&self) -> &::std::option::Option<i64> {
668        &self.content_length
669    }
670    /// <p>The Base64 encoded, 32-bit <code>CRC32 checksum</code> 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>
671    pub fn checksum_crc32(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
672        self.checksum_crc32 = ::std::option::Option::Some(input.into());
673        self
674    }
675    /// <p>The Base64 encoded, 32-bit <code>CRC32 checksum</code> 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>
676    pub fn set_checksum_crc32(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
677        self.checksum_crc32 = input;
678        self
679    }
680    /// <p>The Base64 encoded, 32-bit <code>CRC32 checksum</code> 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>
681    pub fn get_checksum_crc32(&self) -> &::std::option::Option<::std::string::String> {
682        &self.checksum_crc32
683    }
684    /// <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>
685    pub fn checksum_crc32_c(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
686        self.checksum_crc32_c = ::std::option::Option::Some(input.into());
687        self
688    }
689    /// <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>
690    pub fn set_checksum_crc32_c(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
691        self.checksum_crc32_c = input;
692        self
693    }
694    /// <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>
695    pub fn get_checksum_crc32_c(&self) -> &::std::option::Option<::std::string::String> {
696        &self.checksum_crc32_c
697    }
698    /// <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>
699    pub fn checksum_crc64_nvme(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
700        self.checksum_crc64_nvme = ::std::option::Option::Some(input.into());
701        self
702    }
703    /// <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>
704    pub fn set_checksum_crc64_nvme(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
705        self.checksum_crc64_nvme = input;
706        self
707    }
708    /// <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>
709    pub fn get_checksum_crc64_nvme(&self) -> &::std::option::Option<::std::string::String> {
710        &self.checksum_crc64_nvme
711    }
712    /// <p>The Base64 encoded, 160-bit <code>SHA1</code> digest of the object. This checksum is only present if the checksum 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>
713    pub fn checksum_sha1(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
714        self.checksum_sha1 = ::std::option::Option::Some(input.into());
715        self
716    }
717    /// <p>The Base64 encoded, 160-bit <code>SHA1</code> digest of the object. This checksum is only present if the checksum 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>
718    pub fn set_checksum_sha1(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
719        self.checksum_sha1 = input;
720        self
721    }
722    /// <p>The Base64 encoded, 160-bit <code>SHA1</code> digest of the object. This checksum is only present if the checksum 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>
723    pub fn get_checksum_sha1(&self) -> &::std::option::Option<::std::string::String> {
724        &self.checksum_sha1
725    }
726    /// <p>The Base64 encoded, 256-bit <code>SHA256</code> digest 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>
727    pub fn checksum_sha256(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
728        self.checksum_sha256 = ::std::option::Option::Some(input.into());
729        self
730    }
731    /// <p>The Base64 encoded, 256-bit <code>SHA256</code> digest 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>
732    pub fn set_checksum_sha256(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
733        self.checksum_sha256 = input;
734        self
735    }
736    /// <p>The Base64 encoded, 256-bit <code>SHA256</code> digest 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>
737    pub fn get_checksum_sha256(&self) -> &::std::option::Option<::std::string::String> {
738        &self.checksum_sha256
739    }
740    /// <p>The Base64 encoded, 512-bit <code>SHA512</code> digest 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>
741    pub fn checksum_sha512(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
742        self.checksum_sha512 = ::std::option::Option::Some(input.into());
743        self
744    }
745    /// <p>The Base64 encoded, 512-bit <code>SHA512</code> digest 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>
746    pub fn set_checksum_sha512(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
747        self.checksum_sha512 = input;
748        self
749    }
750    /// <p>The Base64 encoded, 512-bit <code>SHA512</code> digest 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>
751    pub fn get_checksum_sha512(&self) -> &::std::option::Option<::std::string::String> {
752        &self.checksum_sha512
753    }
754    /// <p>The Base64 encoded, 128-bit <code>MD5</code> digest 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>
755    pub fn checksum_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
756        self.checksum_md5 = ::std::option::Option::Some(input.into());
757        self
758    }
759    /// <p>The Base64 encoded, 128-bit <code>MD5</code> digest 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>
760    pub fn set_checksum_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
761        self.checksum_md5 = input;
762        self
763    }
764    /// <p>The Base64 encoded, 128-bit <code>MD5</code> digest 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>
765    pub fn get_checksum_md5(&self) -> &::std::option::Option<::std::string::String> {
766        &self.checksum_md5
767    }
768    /// <p>The Base64 encoded, 64-bit <code>XXHASH64</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>
769    pub fn checksum_xxhash64(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
770        self.checksum_xxhash64 = ::std::option::Option::Some(input.into());
771        self
772    }
773    /// <p>The Base64 encoded, 64-bit <code>XXHASH64</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>
774    pub fn set_checksum_xxhash64(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
775        self.checksum_xxhash64 = input;
776        self
777    }
778    /// <p>The Base64 encoded, 64-bit <code>XXHASH64</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>
779    pub fn get_checksum_xxhash64(&self) -> &::std::option::Option<::std::string::String> {
780        &self.checksum_xxhash64
781    }
782    /// <p>The Base64 encoded, 64-bit <code>XXHASH3</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>
783    pub fn checksum_xxhash3(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
784        self.checksum_xxhash3 = ::std::option::Option::Some(input.into());
785        self
786    }
787    /// <p>The Base64 encoded, 64-bit <code>XXHASH3</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>
788    pub fn set_checksum_xxhash3(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
789        self.checksum_xxhash3 = input;
790        self
791    }
792    /// <p>The Base64 encoded, 64-bit <code>XXHASH3</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>
793    pub fn get_checksum_xxhash3(&self) -> &::std::option::Option<::std::string::String> {
794        &self.checksum_xxhash3
795    }
796    /// <p>The Base64 encoded, 128-bit <code>XXHASH128</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>
797    pub fn checksum_xxhash128(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
798        self.checksum_xxhash128 = ::std::option::Option::Some(input.into());
799        self
800    }
801    /// <p>The Base64 encoded, 128-bit <code>XXHASH128</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>
802    pub fn set_checksum_xxhash128(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
803        self.checksum_xxhash128 = input;
804        self
805    }
806    /// <p>The Base64 encoded, 128-bit <code>XXHASH128</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>
807    pub fn get_checksum_xxhash128(&self) -> &::std::option::Option<::std::string::String> {
808        &self.checksum_xxhash128
809    }
810    /// <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>
811    pub fn checksum_type(mut self, input: crate::types::ChecksumType) -> Self {
812        self.checksum_type = ::std::option::Option::Some(input);
813        self
814    }
815    /// <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>
816    pub fn set_checksum_type(mut self, input: ::std::option::Option<crate::types::ChecksumType>) -> Self {
817        self.checksum_type = input;
818        self
819    }
820    /// <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>
821    pub fn get_checksum_type(&self) -> &::std::option::Option<crate::types::ChecksumType> {
822        &self.checksum_type
823    }
824    /// <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>
825    pub fn e_tag(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
826        self.e_tag = ::std::option::Option::Some(input.into());
827        self
828    }
829    /// <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>
830    pub fn set_e_tag(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
831        self.e_tag = input;
832        self
833    }
834    /// <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>
835    pub fn get_e_tag(&self) -> &::std::option::Option<::std::string::String> {
836        &self.e_tag
837    }
838    /// <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>
839    /// <p>This functionality is not supported for directory buckets.</p>
840    /// </note>
841    pub fn missing_meta(mut self, input: i32) -> Self {
842        self.missing_meta = ::std::option::Option::Some(input);
843        self
844    }
845    /// <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>
846    /// <p>This functionality is not supported for directory buckets.</p>
847    /// </note>
848    pub fn set_missing_meta(mut self, input: ::std::option::Option<i32>) -> Self {
849        self.missing_meta = input;
850        self
851    }
852    /// <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>
853    /// <p>This functionality is not supported for directory buckets.</p>
854    /// </note>
855    pub fn get_missing_meta(&self) -> &::std::option::Option<i32> {
856        &self.missing_meta
857    }
858    /// <p>Version ID of the object.</p><note>
859    /// <p>This functionality is not supported for directory buckets.</p>
860    /// </note>
861    pub fn version_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
862        self.version_id = ::std::option::Option::Some(input.into());
863        self
864    }
865    /// <p>Version ID of the object.</p><note>
866    /// <p>This functionality is not supported for directory buckets.</p>
867    /// </note>
868    pub fn set_version_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
869        self.version_id = input;
870        self
871    }
872    /// <p>Version ID of the object.</p><note>
873    /// <p>This functionality is not supported for directory buckets.</p>
874    /// </note>
875    pub fn get_version_id(&self) -> &::std::option::Option<::std::string::String> {
876        &self.version_id
877    }
878    /// <p>Specifies caching behavior along the request/reply chain.</p>
879    pub fn cache_control(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
880        self.cache_control = ::std::option::Option::Some(input.into());
881        self
882    }
883    /// <p>Specifies caching behavior along the request/reply chain.</p>
884    pub fn set_cache_control(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
885        self.cache_control = input;
886        self
887    }
888    /// <p>Specifies caching behavior along the request/reply chain.</p>
889    pub fn get_cache_control(&self) -> &::std::option::Option<::std::string::String> {
890        &self.cache_control
891    }
892    /// <p>Specifies presentational information for the object.</p>
893    pub fn content_disposition(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
894        self.content_disposition = ::std::option::Option::Some(input.into());
895        self
896    }
897    /// <p>Specifies presentational information for the object.</p>
898    pub fn set_content_disposition(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
899        self.content_disposition = input;
900        self
901    }
902    /// <p>Specifies presentational information for the object.</p>
903    pub fn get_content_disposition(&self) -> &::std::option::Option<::std::string::String> {
904        &self.content_disposition
905    }
906    /// <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>
907    pub fn content_encoding(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
908        self.content_encoding = ::std::option::Option::Some(input.into());
909        self
910    }
911    /// <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>
912    pub fn set_content_encoding(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
913        self.content_encoding = input;
914        self
915    }
916    /// <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>
917    pub fn get_content_encoding(&self) -> &::std::option::Option<::std::string::String> {
918        &self.content_encoding
919    }
920    /// <p>The language the content is in.</p>
921    pub fn content_language(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
922        self.content_language = ::std::option::Option::Some(input.into());
923        self
924    }
925    /// <p>The language the content is in.</p>
926    pub fn set_content_language(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
927        self.content_language = input;
928        self
929    }
930    /// <p>The language the content is in.</p>
931    pub fn get_content_language(&self) -> &::std::option::Option<::std::string::String> {
932        &self.content_language
933    }
934    /// <p>A standard MIME type describing the format of the object data.</p>
935    pub fn content_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
936        self.content_type = ::std::option::Option::Some(input.into());
937        self
938    }
939    /// <p>A standard MIME type describing the format of the object data.</p>
940    pub fn set_content_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
941        self.content_type = input;
942        self
943    }
944    /// <p>A standard MIME type describing the format of the object data.</p>
945    pub fn get_content_type(&self) -> &::std::option::Option<::std::string::String> {
946        &self.content_type
947    }
948    /// <p>The portion of the object returned in the response for a <code>GET</code> request.</p>
949    pub fn content_range(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
950        self.content_range = ::std::option::Option::Some(input.into());
951        self
952    }
953    /// <p>The portion of the object returned in the response for a <code>GET</code> request.</p>
954    pub fn set_content_range(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
955        self.content_range = input;
956        self
957    }
958    /// <p>The portion of the object returned in the response for a <code>GET</code> request.</p>
959    pub fn get_content_range(&self) -> &::std::option::Option<::std::string::String> {
960        &self.content_range
961    }
962    /// <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>
963    /// <p>This functionality is not supported for directory buckets.</p>
964    /// </note>
965    pub fn website_redirect_location(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
966        self.website_redirect_location = ::std::option::Option::Some(input.into());
967        self
968    }
969    /// <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>
970    /// <p>This functionality is not supported for directory buckets.</p>
971    /// </note>
972    pub fn set_website_redirect_location(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
973        self.website_redirect_location = input;
974        self
975    }
976    /// <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>
977    /// <p>This functionality is not supported for directory buckets.</p>
978    /// </note>
979    pub fn get_website_redirect_location(&self) -> &::std::option::Option<::std::string::String> {
980        &self.website_redirect_location
981    }
982    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.</p><note>
983    /// <p>When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side encryption option is <code>aws:fsx</code>.</p>
984    /// </note>
985    pub fn server_side_encryption(mut self, input: crate::types::ServerSideEncryption) -> Self {
986        self.server_side_encryption = ::std::option::Option::Some(input);
987        self
988    }
989    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.</p><note>
990    /// <p>When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side encryption option is <code>aws:fsx</code>.</p>
991    /// </note>
992    pub fn set_server_side_encryption(mut self, input: ::std::option::Option<crate::types::ServerSideEncryption>) -> Self {
993        self.server_side_encryption = input;
994        self
995    }
996    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.</p><note>
997    /// <p>When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side encryption option is <code>aws:fsx</code>.</p>
998    /// </note>
999    pub fn get_server_side_encryption(&self) -> &::std::option::Option<crate::types::ServerSideEncryption> {
1000        &self.server_side_encryption
1001    }
1002    /// Adds a key-value pair to `metadata`.
1003    ///
1004    /// To override the contents of this collection use [`set_metadata`](Self::set_metadata).
1005    ///
1006    /// <p>A map of metadata to store with the object in S3.</p>
1007    pub fn metadata(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
1008        let mut hash_map = self.metadata.unwrap_or_default();
1009        hash_map.insert(k.into(), v.into());
1010        self.metadata = ::std::option::Option::Some(hash_map);
1011        self
1012    }
1013    /// <p>A map of metadata to store with the object in S3.</p>
1014    pub fn set_metadata(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
1015        self.metadata = input;
1016        self
1017    }
1018    /// <p>A map of metadata to store with the object in S3.</p>
1019    pub fn get_metadata(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
1020        &self.metadata
1021    }
1022    /// <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>
1023    /// <p>This functionality is not supported for directory buckets.</p>
1024    /// </note>
1025    pub fn sse_customer_algorithm(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1026        self.sse_customer_algorithm = ::std::option::Option::Some(input.into());
1027        self
1028    }
1029    /// <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>
1030    /// <p>This functionality is not supported for directory buckets.</p>
1031    /// </note>
1032    pub fn set_sse_customer_algorithm(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1033        self.sse_customer_algorithm = input;
1034        self
1035    }
1036    /// <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>
1037    /// <p>This functionality is not supported for directory buckets.</p>
1038    /// </note>
1039    pub fn get_sse_customer_algorithm(&self) -> &::std::option::Option<::std::string::String> {
1040        &self.sse_customer_algorithm
1041    }
1042    /// <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>
1043    /// <p>This functionality is not supported for directory buckets.</p>
1044    /// </note>
1045    pub fn sse_customer_key_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1046        self.sse_customer_key_md5 = ::std::option::Option::Some(input.into());
1047        self
1048    }
1049    /// <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>
1050    /// <p>This functionality is not supported for directory buckets.</p>
1051    /// </note>
1052    pub fn set_sse_customer_key_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1053        self.sse_customer_key_md5 = input;
1054        self
1055    }
1056    /// <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>
1057    /// <p>This functionality is not supported for directory buckets.</p>
1058    /// </note>
1059    pub fn get_sse_customer_key_md5(&self) -> &::std::option::Option<::std::string::String> {
1060        &self.sse_customer_key_md5
1061    }
1062    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
1063    pub fn ssekms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1064        self.ssekms_key_id = ::std::option::Option::Some(input.into());
1065        self
1066    }
1067    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
1068    pub fn set_ssekms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1069        self.ssekms_key_id = input;
1070        self
1071    }
1072    /// <p>If present, indicates the ID of the KMS key that was used for object encryption.</p>
1073    pub fn get_ssekms_key_id(&self) -> &::std::option::Option<::std::string::String> {
1074        &self.ssekms_key_id
1075    }
1076    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
1077    pub fn bucket_key_enabled(mut self, input: bool) -> Self {
1078        self.bucket_key_enabled = ::std::option::Option::Some(input);
1079        self
1080    }
1081    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
1082    pub fn set_bucket_key_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
1083        self.bucket_key_enabled = input;
1084        self
1085    }
1086    /// <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).</p>
1087    pub fn get_bucket_key_enabled(&self) -> &::std::option::Option<bool> {
1088        &self.bucket_key_enabled
1089    }
1090    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
1091    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
1092    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
1093    /// </note>
1094    pub fn storage_class(mut self, input: crate::types::StorageClass) -> Self {
1095        self.storage_class = ::std::option::Option::Some(input);
1096        self
1097    }
1098    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
1099    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
1100    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
1101    /// </note>
1102    pub fn set_storage_class(mut self, input: ::std::option::Option<crate::types::StorageClass>) -> Self {
1103        self.storage_class = input;
1104        self
1105    }
1106    /// <p>Provides storage class information of the object. Amazon S3 returns this header for all objects except for S3 Standard storage class objects.</p>
1107    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a>.</p><note>
1108    /// <p><b>Directory buckets </b> - Directory buckets only support <code>EXPRESS_ONEZONE</code> (the S3 Express One Zone storage class) in Availability Zones and <code>ONEZONE_IA</code> (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.</p>
1109    /// </note>
1110    pub fn get_storage_class(&self) -> &::std::option::Option<crate::types::StorageClass> {
1111        &self.storage_class
1112    }
1113    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
1114    /// <p>This functionality is not supported for directory buckets.</p>
1115    /// </note>
1116    pub fn request_charged(mut self, input: crate::types::RequestCharged) -> Self {
1117        self.request_charged = ::std::option::Option::Some(input);
1118        self
1119    }
1120    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
1121    /// <p>This functionality is not supported for directory buckets.</p>
1122    /// </note>
1123    pub fn set_request_charged(mut self, input: ::std::option::Option<crate::types::RequestCharged>) -> Self {
1124        self.request_charged = input;
1125        self
1126    }
1127    /// <p>If present, indicates that the requester was successfully charged for the request. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html">Using Requester Pays buckets for storage transfers and usage</a> in the <i>Amazon Simple Storage Service user guide</i>.</p><note>
1128    /// <p>This functionality is not supported for directory buckets.</p>
1129    /// </note>
1130    pub fn get_request_charged(&self) -> &::std::option::Option<crate::types::RequestCharged> {
1131        &self.request_charged
1132    }
1133    /// <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>
1134    /// <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>
1135    /// <ul>
1136    /// <li>
1137    /// <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>
1138    /// <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>
1139    /// <li>
1140    /// <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>
1141    /// <li>
1142    /// <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>
1143    /// </ul>
1144    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
1145    /// <p>This functionality is not supported for directory buckets.</p>
1146    /// </note>
1147    pub fn replication_status(mut self, input: crate::types::ReplicationStatus) -> Self {
1148        self.replication_status = ::std::option::Option::Some(input);
1149        self
1150    }
1151    /// <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>
1152    /// <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>
1153    /// <ul>
1154    /// <li>
1155    /// <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>
1156    /// <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>
1157    /// <li>
1158    /// <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>
1159    /// <li>
1160    /// <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>
1161    /// </ul>
1162    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
1163    /// <p>This functionality is not supported for directory buckets.</p>
1164    /// </note>
1165    pub fn set_replication_status(mut self, input: ::std::option::Option<crate::types::ReplicationStatus>) -> Self {
1166        self.replication_status = input;
1167        self
1168    }
1169    /// <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>
1170    /// <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>
1171    /// <ul>
1172    /// <li>
1173    /// <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>
1174    /// <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>
1175    /// <li>
1176    /// <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>
1177    /// <li>
1178    /// <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>
1179    /// </ul>
1180    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p><note>
1181    /// <p>This functionality is not supported for directory buckets.</p>
1182    /// </note>
1183    pub fn get_replication_status(&self) -> &::std::option::Option<crate::types::ReplicationStatus> {
1184        &self.replication_status
1185    }
1186    /// <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>
1187    pub fn parts_count(mut self, input: i32) -> Self {
1188        self.parts_count = ::std::option::Option::Some(input);
1189        self
1190    }
1191    /// <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>
1192    pub fn set_parts_count(mut self, input: ::std::option::Option<i32>) -> Self {
1193        self.parts_count = input;
1194        self
1195    }
1196    /// <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>
1197    pub fn get_parts_count(&self) -> &::std::option::Option<i32> {
1198        &self.parts_count
1199    }
1200    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
1201    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
1202    /// <p>This functionality is not supported for directory buckets.</p>
1203    /// </note>
1204    pub fn tag_count(mut self, input: i32) -> Self {
1205        self.tag_count = ::std::option::Option::Some(input);
1206        self
1207    }
1208    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
1209    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
1210    /// <p>This functionality is not supported for directory buckets.</p>
1211    /// </note>
1212    pub fn set_tag_count(mut self, input: ::std::option::Option<i32>) -> Self {
1213        self.tag_count = input;
1214        self
1215    }
1216    /// <p>The number of tags, if any, on the object, when you have the relevant permission to read object tags.</p>
1217    /// <p>You can use <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a> to retrieve the tag set associated with an object.</p><note>
1218    /// <p>This functionality is not supported for directory buckets.</p>
1219    /// </note>
1220    pub fn get_tag_count(&self) -> &::std::option::Option<i32> {
1221        &self.tag_count
1222    }
1223    /// <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>
1224    /// <p>This functionality is not supported for directory buckets.</p>
1225    /// </note>
1226    pub fn object_lock_mode(mut self, input: crate::types::ObjectLockMode) -> Self {
1227        self.object_lock_mode = ::std::option::Option::Some(input);
1228        self
1229    }
1230    /// <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>
1231    /// <p>This functionality is not supported for directory buckets.</p>
1232    /// </note>
1233    pub fn set_object_lock_mode(mut self, input: ::std::option::Option<crate::types::ObjectLockMode>) -> Self {
1234        self.object_lock_mode = input;
1235        self
1236    }
1237    /// <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>
1238    /// <p>This functionality is not supported for directory buckets.</p>
1239    /// </note>
1240    pub fn get_object_lock_mode(&self) -> &::std::option::Option<crate::types::ObjectLockMode> {
1241        &self.object_lock_mode
1242    }
1243    /// <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>
1244    /// <p>This functionality is not supported for directory buckets.</p>
1245    /// </note>
1246    pub fn object_lock_retain_until_date(mut self, input: ::aws_smithy_types::DateTime) -> Self {
1247        self.object_lock_retain_until_date = ::std::option::Option::Some(input);
1248        self
1249    }
1250    /// <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>
1251    /// <p>This functionality is not supported for directory buckets.</p>
1252    /// </note>
1253    pub fn set_object_lock_retain_until_date(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
1254        self.object_lock_retain_until_date = input;
1255        self
1256    }
1257    /// <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>
1258    /// <p>This functionality is not supported for directory buckets.</p>
1259    /// </note>
1260    pub fn get_object_lock_retain_until_date(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
1261        &self.object_lock_retain_until_date
1262    }
1263    /// <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>
1264    /// <p>This functionality is not supported for directory buckets.</p>
1265    /// </note>
1266    pub fn object_lock_legal_hold_status(mut self, input: crate::types::ObjectLockLegalHoldStatus) -> Self {
1267        self.object_lock_legal_hold_status = ::std::option::Option::Some(input);
1268        self
1269    }
1270    /// <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>
1271    /// <p>This functionality is not supported for directory buckets.</p>
1272    /// </note>
1273    pub fn set_object_lock_legal_hold_status(mut self, input: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>) -> Self {
1274        self.object_lock_legal_hold_status = input;
1275        self
1276    }
1277    /// <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>
1278    /// <p>This functionality is not supported for directory buckets.</p>
1279    /// </note>
1280    pub fn get_object_lock_legal_hold_status(&self) -> &::std::option::Option<crate::types::ObjectLockLegalHoldStatus> {
1281        &self.object_lock_legal_hold_status
1282    }
1283    /// <p>The event hold status for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
1284    /// <p>This functionality is not supported for directory buckets.</p>
1285    /// </note>
1286    pub fn object_lock_event_hold(mut self, input: crate::types::ObjectLockEventHold) -> Self {
1287        self.object_lock_event_hold = ::std::option::Option::Some(input);
1288        self
1289    }
1290    /// <p>The event hold status for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
1291    /// <p>This functionality is not supported for directory buckets.</p>
1292    /// </note>
1293    pub fn set_object_lock_event_hold(mut self, input: ::std::option::Option<crate::types::ObjectLockEventHold>) -> Self {
1294        self.object_lock_event_hold = input;
1295        self
1296    }
1297    /// <p>The event hold status for this object. This header is only returned if the requester has the <code>s3:GetObjectRetention</code> permission.</p><note>
1298    /// <p>This functionality is not supported for directory buckets.</p>
1299    /// </note>
1300    pub fn get_object_lock_event_hold(&self) -> &::std::option::Option<crate::types::ObjectLockEventHold> {
1301        &self.object_lock_event_hold
1302    }
1303    /// <p>The event hold duration in days for this object. Only returned when the event hold is enabled.</p><note>
1304    /// <p>This functionality is not supported for directory buckets.</p>
1305    /// </note>
1306    pub fn object_lock_event_hold_duration_days(mut self, input: i32) -> Self {
1307        self.object_lock_event_hold_duration_days = ::std::option::Option::Some(input);
1308        self
1309    }
1310    /// <p>The event hold duration in days for this object. Only returned when the event hold is enabled.</p><note>
1311    /// <p>This functionality is not supported for directory buckets.</p>
1312    /// </note>
1313    pub fn set_object_lock_event_hold_duration_days(mut self, input: ::std::option::Option<i32>) -> Self {
1314        self.object_lock_event_hold_duration_days = input;
1315        self
1316    }
1317    /// <p>The event hold duration in days for this object. Only returned when the event hold is enabled.</p><note>
1318    /// <p>This functionality is not supported for directory buckets.</p>
1319    /// </note>
1320    pub fn get_object_lock_event_hold_duration_days(&self) -> &::std::option::Option<i32> {
1321        &self.object_lock_event_hold_duration_days
1322    }
1323    /// <p>The event hold duration in years for this object. Only returned when the event hold is enabled.</p><note>
1324    /// <p>This functionality is not supported for directory buckets.</p>
1325    /// </note>
1326    pub fn object_lock_event_hold_duration_years(mut self, input: i32) -> Self {
1327        self.object_lock_event_hold_duration_years = ::std::option::Option::Some(input);
1328        self
1329    }
1330    /// <p>The event hold duration in years for this object. Only returned when the event hold is enabled.</p><note>
1331    /// <p>This functionality is not supported for directory buckets.</p>
1332    /// </note>
1333    pub fn set_object_lock_event_hold_duration_years(mut self, input: ::std::option::Option<i32>) -> Self {
1334        self.object_lock_event_hold_duration_years = input;
1335        self
1336    }
1337    /// <p>The event hold duration in years for this object. Only returned when the event hold is enabled.</p><note>
1338    /// <p>This functionality is not supported for directory buckets.</p>
1339    /// </note>
1340    pub fn get_object_lock_event_hold_duration_years(&self) -> &::std::option::Option<i32> {
1341        &self.object_lock_event_hold_duration_years
1342    }
1343    /// <p>The date and time at which the object is no longer cacheable.</p>
1344    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
1345    pub fn expires(mut self, input: ::aws_smithy_types::DateTime) -> Self {
1346        self.expires = ::std::option::Option::Some(input);
1347        self
1348    }
1349    /// <p>The date and time at which the object is no longer cacheable.</p>
1350    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
1351    pub fn set_expires(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
1352        self.expires = input;
1353        self
1354    }
1355    /// <p>The date and time at which the object is no longer cacheable.</p>
1356    #[deprecated(note = "Please use `expires_string` which contains the raw, unparsed value of this field.")]
1357    pub fn get_expires(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
1358        &self.expires
1359    }
1360    /// <p>The date and time at which the object is no longer cacheable.</p>
1361    pub fn expires_string(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1362        self.expires_string = ::std::option::Option::Some(input.into());
1363        self
1364    }
1365    /// <p>The date and time at which the object is no longer cacheable.</p>
1366    pub fn set_expires_string(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1367        self.expires_string = input;
1368        self
1369    }
1370    /// <p>The date and time at which the object is no longer cacheable.</p>
1371    pub fn get_expires_string(&self) -> &::std::option::Option<::std::string::String> {
1372        &self.expires_string
1373    }
1374    pub(crate) fn _extended_request_id(mut self, extended_request_id: impl Into<String>) -> Self {
1375        self._extended_request_id = Some(extended_request_id.into());
1376        self
1377    }
1378
1379    pub(crate) fn _set_extended_request_id(&mut self, extended_request_id: Option<String>) -> &mut Self {
1380        self._extended_request_id = extended_request_id;
1381        self
1382    }
1383    pub(crate) fn _request_id(mut self, request_id: impl Into<String>) -> Self {
1384        self._request_id = Some(request_id.into());
1385        self
1386    }
1387
1388    pub(crate) fn _set_request_id(&mut self, request_id: Option<String>) -> &mut Self {
1389        self._request_id = request_id;
1390        self
1391    }
1392    /// Consumes the builder and constructs a [`HeadObjectOutput`](crate::operation::head_object::HeadObjectOutput).
1393    pub fn build(self) -> crate::operation::head_object::HeadObjectOutput {
1394        crate::operation::head_object::HeadObjectOutput {
1395            delete_marker: self.delete_marker,
1396            accept_ranges: self.accept_ranges,
1397            expiration: self.expiration,
1398            restore: self.restore,
1399            archive_status: self.archive_status,
1400            last_modified: self.last_modified,
1401            content_length: self.content_length,
1402            checksum_crc32: self.checksum_crc32,
1403            checksum_crc32_c: self.checksum_crc32_c,
1404            checksum_crc64_nvme: self.checksum_crc64_nvme,
1405            checksum_sha1: self.checksum_sha1,
1406            checksum_sha256: self.checksum_sha256,
1407            checksum_sha512: self.checksum_sha512,
1408            checksum_md5: self.checksum_md5,
1409            checksum_xxhash64: self.checksum_xxhash64,
1410            checksum_xxhash3: self.checksum_xxhash3,
1411            checksum_xxhash128: self.checksum_xxhash128,
1412            checksum_type: self.checksum_type,
1413            e_tag: self.e_tag,
1414            missing_meta: self.missing_meta,
1415            version_id: self.version_id,
1416            cache_control: self.cache_control,
1417            content_disposition: self.content_disposition,
1418            content_encoding: self.content_encoding,
1419            content_language: self.content_language,
1420            content_type: self.content_type,
1421            content_range: self.content_range,
1422            website_redirect_location: self.website_redirect_location,
1423            server_side_encryption: self.server_side_encryption,
1424            metadata: self.metadata,
1425            sse_customer_algorithm: self.sse_customer_algorithm,
1426            sse_customer_key_md5: self.sse_customer_key_md5,
1427            ssekms_key_id: self.ssekms_key_id,
1428            bucket_key_enabled: self.bucket_key_enabled,
1429            storage_class: self.storage_class,
1430            request_charged: self.request_charged,
1431            replication_status: self.replication_status,
1432            parts_count: self.parts_count,
1433            tag_count: self.tag_count,
1434            object_lock_mode: self.object_lock_mode,
1435            object_lock_retain_until_date: self.object_lock_retain_until_date,
1436            object_lock_legal_hold_status: self.object_lock_legal_hold_status,
1437            object_lock_event_hold: self.object_lock_event_hold,
1438            object_lock_event_hold_duration_days: self.object_lock_event_hold_duration_days,
1439            object_lock_event_hold_duration_years: self.object_lock_event_hold_duration_years,
1440            expires: self.expires,
1441            expires_string: self.expires_string,
1442            _extended_request_id: self._extended_request_id,
1443            _request_id: self._request_id,
1444        }
1445    }
1446}
1447impl ::std::fmt::Debug for HeadObjectOutputBuilder {
1448    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1449        let mut formatter = f.debug_struct("HeadObjectOutputBuilder");
1450        formatter.field("delete_marker", &self.delete_marker);
1451        formatter.field("accept_ranges", &self.accept_ranges);
1452        formatter.field("expiration", &self.expiration);
1453        formatter.field("restore", &self.restore);
1454        formatter.field("archive_status", &self.archive_status);
1455        formatter.field("last_modified", &self.last_modified);
1456        formatter.field("content_length", &self.content_length);
1457        formatter.field("checksum_crc32", &self.checksum_crc32);
1458        formatter.field("checksum_crc32_c", &self.checksum_crc32_c);
1459        formatter.field("checksum_crc64_nvme", &self.checksum_crc64_nvme);
1460        formatter.field("checksum_sha1", &self.checksum_sha1);
1461        formatter.field("checksum_sha256", &self.checksum_sha256);
1462        formatter.field("checksum_sha512", &self.checksum_sha512);
1463        formatter.field("checksum_md5", &self.checksum_md5);
1464        formatter.field("checksum_xxhash64", &self.checksum_xxhash64);
1465        formatter.field("checksum_xxhash3", &self.checksum_xxhash3);
1466        formatter.field("checksum_xxhash128", &self.checksum_xxhash128);
1467        formatter.field("checksum_type", &self.checksum_type);
1468        formatter.field("e_tag", &self.e_tag);
1469        formatter.field("missing_meta", &self.missing_meta);
1470        formatter.field("version_id", &self.version_id);
1471        formatter.field("cache_control", &self.cache_control);
1472        formatter.field("content_disposition", &self.content_disposition);
1473        formatter.field("content_encoding", &self.content_encoding);
1474        formatter.field("content_language", &self.content_language);
1475        formatter.field("content_type", &self.content_type);
1476        formatter.field("content_range", &self.content_range);
1477        formatter.field("website_redirect_location", &self.website_redirect_location);
1478        formatter.field("server_side_encryption", &self.server_side_encryption);
1479        formatter.field("metadata", &self.metadata);
1480        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
1481        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
1482        formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
1483        formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
1484        formatter.field("storage_class", &self.storage_class);
1485        formatter.field("request_charged", &self.request_charged);
1486        formatter.field("replication_status", &self.replication_status);
1487        formatter.field("parts_count", &self.parts_count);
1488        formatter.field("tag_count", &self.tag_count);
1489        formatter.field("object_lock_mode", &self.object_lock_mode);
1490        formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
1491        formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
1492        formatter.field("object_lock_event_hold", &self.object_lock_event_hold);
1493        formatter.field("object_lock_event_hold_duration_days", &self.object_lock_event_hold_duration_days);
1494        formatter.field("object_lock_event_hold_duration_years", &self.object_lock_event_hold_duration_years);
1495        formatter.field("expires", &self.expires);
1496        formatter.field("expires_string", &self.expires_string);
1497        formatter.field("_extended_request_id", &self._extended_request_id);
1498        formatter.field("_request_id", &self._request_id);
1499        formatter.finish()
1500    }
1501}