Skip to main content

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