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