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