1#[allow(clippy::unnecessary_wraps)]
3pub fn de_put_object_http_error(
4 _response_status: u16,
5 _response_headers: &::aws_smithy_runtime_api::http::Headers,
6 _response_body: &[u8],
7) -> std::result::Result<crate::operation::put_object::PutObjectOutput, crate::operation::put_object::PutObjectError> {
8 #[allow(unused_mut)]
9 let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(_response_status, _response_headers, _response_body)
10 .map_err(crate::operation::put_object::PutObjectError::unhandled)?;
11 generic_builder = crate::s3_request_id::apply_extended_request_id(generic_builder, _response_headers);
12 generic_builder = ::aws_types::request_id::apply_request_id(generic_builder, _response_headers);
13 let generic = generic_builder.build();
14 let error_code = match generic.code() {
15 Some(code) => code,
16 None => return Err(crate::operation::put_object::PutObjectError::unhandled(generic)),
17 };
18
19 let _error_message = generic.message().map(|msg| msg.to_owned());
20 Err(match error_code {
21 "EncryptionTypeMismatch" => crate::operation::put_object::PutObjectError::EncryptionTypeMismatch({
22 #[allow(unused_mut)]
23 let mut tmp = {
24 #[allow(unused_mut)]
25 let mut output = crate::types::error::builders::EncryptionTypeMismatchBuilder::default();
26 output = crate::protocol_serde::shape_encryption_type_mismatch::de_encryption_type_mismatch_xml_err(_response_body, output)
27 .map_err(crate::operation::put_object::PutObjectError::unhandled)?;
28 let output = output.meta(generic);
29 output.build()
30 };
31 if tmp.message.is_none() {
32 tmp.message = _error_message;
33 }
34 tmp
35 }),
36 "InvalidRequest" => crate::operation::put_object::PutObjectError::InvalidRequest({
37 #[allow(unused_mut)]
38 let mut tmp = {
39 #[allow(unused_mut)]
40 let mut output = crate::types::error::builders::InvalidRequestBuilder::default();
41 output = crate::protocol_serde::shape_invalid_request::de_invalid_request_xml_err(_response_body, output)
42 .map_err(crate::operation::put_object::PutObjectError::unhandled)?;
43 let output = output.meta(generic);
44 output.build()
45 };
46 if tmp.message.is_none() {
47 tmp.message = _error_message;
48 }
49 tmp
50 }),
51 "InvalidWriteOffset" => crate::operation::put_object::PutObjectError::InvalidWriteOffset({
52 #[allow(unused_mut)]
53 let mut tmp = {
54 #[allow(unused_mut)]
55 let mut output = crate::types::error::builders::InvalidWriteOffsetBuilder::default();
56 output = crate::protocol_serde::shape_invalid_write_offset::de_invalid_write_offset_xml_err(_response_body, output)
57 .map_err(crate::operation::put_object::PutObjectError::unhandled)?;
58 let output = output.meta(generic);
59 output.build()
60 };
61 if tmp.message.is_none() {
62 tmp.message = _error_message;
63 }
64 tmp
65 }),
66 "TooManyParts" => crate::operation::put_object::PutObjectError::TooManyParts({
67 #[allow(unused_mut)]
68 let mut tmp = {
69 #[allow(unused_mut)]
70 let mut output = crate::types::error::builders::TooManyPartsBuilder::default();
71 output = crate::protocol_serde::shape_too_many_parts::de_too_many_parts_xml_err(_response_body, output)
72 .map_err(crate::operation::put_object::PutObjectError::unhandled)?;
73 let output = output.meta(generic);
74 output.build()
75 };
76 if tmp.message.is_none() {
77 tmp.message = _error_message;
78 }
79 tmp
80 }),
81 _ => crate::operation::put_object::PutObjectError::generic(generic),
82 })
83}
84
85#[allow(clippy::unnecessary_wraps)]
86pub fn de_put_object_http_response(
87 _response_status: u16,
88 _response_headers: &::aws_smithy_runtime_api::http::Headers,
89 _response_body: &[u8],
90) -> std::result::Result<crate::operation::put_object::PutObjectOutput, crate::operation::put_object::PutObjectError> {
91 Ok({
92 #[allow(unused_mut)]
93 let mut output = crate::operation::put_object::builders::PutObjectOutputBuilder::default();
94 output = output.set_bucket_key_enabled(
95 crate::protocol_serde::shape_put_object_output::de_bucket_key_enabled_header(_response_headers).map_err(|_| {
96 crate::operation::put_object::PutObjectError::unhandled(
97 "Failed to parse BucketKeyEnabled from header `x-amz-server-side-encryption-bucket-key-enabled",
98 )
99 })?,
100 );
101 output = output.set_checksum_crc32(
102 crate::protocol_serde::shape_put_object_output::de_checksum_crc32_header(_response_headers).map_err(|_| {
103 crate::operation::put_object::PutObjectError::unhandled("Failed to parse ChecksumCRC32 from header `x-amz-checksum-crc32")
104 })?,
105 );
106 output = output.set_checksum_crc32_c(
107 crate::protocol_serde::shape_put_object_output::de_checksum_crc32_c_header(_response_headers).map_err(|_| {
108 crate::operation::put_object::PutObjectError::unhandled("Failed to parse ChecksumCRC32C from header `x-amz-checksum-crc32c")
109 })?,
110 );
111 output = output.set_checksum_sha1(
112 crate::protocol_serde::shape_put_object_output::de_checksum_sha1_header(_response_headers).map_err(|_| {
113 crate::operation::put_object::PutObjectError::unhandled("Failed to parse ChecksumSHA1 from header `x-amz-checksum-sha1")
114 })?,
115 );
116 output = output.set_checksum_sha256(
117 crate::protocol_serde::shape_put_object_output::de_checksum_sha256_header(_response_headers).map_err(|_| {
118 crate::operation::put_object::PutObjectError::unhandled("Failed to parse ChecksumSHA256 from header `x-amz-checksum-sha256")
119 })?,
120 );
121 output = output.set_e_tag(
122 crate::protocol_serde::shape_put_object_output::de_e_tag_header(_response_headers)
123 .map_err(|_| crate::operation::put_object::PutObjectError::unhandled("Failed to parse ETag from header `ETag"))?,
124 );
125 output = output.set_expiration(
126 crate::protocol_serde::shape_put_object_output::de_expiration_header(_response_headers)
127 .map_err(|_| crate::operation::put_object::PutObjectError::unhandled("Failed to parse Expiration from header `x-amz-expiration"))?,
128 );
129 output = output.set_request_charged(
130 crate::protocol_serde::shape_put_object_output::de_request_charged_header(_response_headers).map_err(|_| {
131 crate::operation::put_object::PutObjectError::unhandled("Failed to parse RequestCharged from header `x-amz-request-charged")
132 })?,
133 );
134 output = output.set_sse_customer_algorithm(
135 crate::protocol_serde::shape_put_object_output::de_sse_customer_algorithm_header(_response_headers).map_err(|_| {
136 crate::operation::put_object::PutObjectError::unhandled(
137 "Failed to parse SSECustomerAlgorithm from header `x-amz-server-side-encryption-customer-algorithm",
138 )
139 })?,
140 );
141 output = output.set_sse_customer_key_md5(
142 crate::protocol_serde::shape_put_object_output::de_sse_customer_key_md5_header(_response_headers).map_err(|_| {
143 crate::operation::put_object::PutObjectError::unhandled(
144 "Failed to parse SSECustomerKeyMD5 from header `x-amz-server-side-encryption-customer-key-MD5",
145 )
146 })?,
147 );
148 output = output.set_ssekms_encryption_context(
149 crate::protocol_serde::shape_put_object_output::de_ssekms_encryption_context_header(_response_headers).map_err(|_| {
150 crate::operation::put_object::PutObjectError::unhandled(
151 "Failed to parse SSEKMSEncryptionContext from header `x-amz-server-side-encryption-context",
152 )
153 })?,
154 );
155 output = output.set_ssekms_key_id(
156 crate::protocol_serde::shape_put_object_output::de_ssekms_key_id_header(_response_headers).map_err(|_| {
157 crate::operation::put_object::PutObjectError::unhandled(
158 "Failed to parse SSEKMSKeyId from header `x-amz-server-side-encryption-aws-kms-key-id",
159 )
160 })?,
161 );
162 output = output.set_server_side_encryption(
163 crate::protocol_serde::shape_put_object_output::de_server_side_encryption_header(_response_headers).map_err(|_| {
164 crate::operation::put_object::PutObjectError::unhandled(
165 "Failed to parse ServerSideEncryption from header `x-amz-server-side-encryption",
166 )
167 })?,
168 );
169 output = output.set_size(
170 crate::protocol_serde::shape_put_object_output::de_size_header(_response_headers)
171 .map_err(|_| crate::operation::put_object::PutObjectError::unhandled("Failed to parse Size from header `x-amz-object-size"))?,
172 );
173 output = output.set_version_id(
174 crate::protocol_serde::shape_put_object_output::de_version_id_header(_response_headers)
175 .map_err(|_| crate::operation::put_object::PutObjectError::unhandled("Failed to parse VersionId from header `x-amz-version-id"))?,
176 );
177 output._set_extended_request_id(crate::s3_request_id::RequestIdExt::extended_request_id(_response_headers).map(str::to_string));
178 output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
179 output.build()
180 })
181}
182
183pub fn ser_put_object_headers(
184 input: &crate::operation::put_object::PutObjectInput,
185 mut builder: ::http::request::Builder,
186) -> std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
187 if let ::std::option::Option::Some(inner_1) = &input.acl {
188 let formatted_2 = inner_1.as_str();
189 let header_value = formatted_2;
190 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
191 ::aws_smithy_types::error::operation::BuildError::invalid_field(
192 "acl",
193 format!("`{}` cannot be used as a header value: {}", &header_value, err),
194 )
195 })?;
196 builder = builder.header("x-amz-acl", header_value);
197 }
198 if let ::std::option::Option::Some(inner_3) = &input.cache_control {
199 let formatted_4 = inner_3.as_str();
200 let header_value = formatted_4;
201 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
202 ::aws_smithy_types::error::operation::BuildError::invalid_field(
203 "cache_control",
204 format!("`{}` cannot be used as a header value: {}", &header_value, err),
205 )
206 })?;
207 builder = builder.header("Cache-Control", header_value);
208 }
209 if let ::std::option::Option::Some(inner_5) = &input.content_disposition {
210 let formatted_6 = inner_5.as_str();
211 let header_value = formatted_6;
212 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
213 ::aws_smithy_types::error::operation::BuildError::invalid_field(
214 "content_disposition",
215 format!("`{}` cannot be used as a header value: {}", &header_value, err),
216 )
217 })?;
218 builder = builder.header("Content-Disposition", header_value);
219 }
220 if let ::std::option::Option::Some(inner_7) = &input.content_encoding {
221 let formatted_8 = inner_7.as_str();
222 let header_value = formatted_8;
223 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
224 ::aws_smithy_types::error::operation::BuildError::invalid_field(
225 "content_encoding",
226 format!("`{}` cannot be used as a header value: {}", &header_value, err),
227 )
228 })?;
229 builder = builder.header("Content-Encoding", header_value);
230 }
231 if let ::std::option::Option::Some(inner_9) = &input.content_language {
232 let formatted_10 = inner_9.as_str();
233 let header_value = formatted_10;
234 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
235 ::aws_smithy_types::error::operation::BuildError::invalid_field(
236 "content_language",
237 format!("`{}` cannot be used as a header value: {}", &header_value, err),
238 )
239 })?;
240 builder = builder.header("Content-Language", header_value);
241 }
242 if let ::std::option::Option::Some(inner_11) = &input.content_length {
243 let mut encoder = ::aws_smithy_types::primitive::Encoder::from(*inner_11);
244 let formatted_12 = encoder.encode();
245 let header_value = formatted_12;
246 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
247 ::aws_smithy_types::error::operation::BuildError::invalid_field(
248 "content_length",
249 format!("`{}` cannot be used as a header value: {}", &header_value, err),
250 )
251 })?;
252 builder = builder.header("Content-Length", header_value);
253 }
254 if let ::std::option::Option::Some(inner_13) = &input.content_md5 {
255 let formatted_14 = inner_13.as_str();
256 let header_value = formatted_14;
257 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
258 ::aws_smithy_types::error::operation::BuildError::invalid_field(
259 "content_md5",
260 format!("`{}` cannot be used as a header value: {}", &header_value, err),
261 )
262 })?;
263 builder = builder.header("Content-MD5", header_value);
264 }
265 if let ::std::option::Option::Some(inner_15) = &input.content_type {
266 let formatted_16 = inner_15.as_str();
267 let header_value = formatted_16;
268 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
269 ::aws_smithy_types::error::operation::BuildError::invalid_field(
270 "content_type",
271 format!("`{}` cannot be used as a header value: {}", &header_value, err),
272 )
273 })?;
274 builder = builder.header("Content-Type", header_value);
275 }
276 if let ::std::option::Option::Some(inner_17) = &input.checksum_algorithm {
277 let formatted_18 = inner_17.as_str();
278 let header_value = formatted_18;
279 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
280 ::aws_smithy_types::error::operation::BuildError::invalid_field(
281 "checksum_algorithm",
282 format!("`{}` cannot be used as a header value: {}", &header_value, err),
283 )
284 })?;
285 builder = builder.header("x-amz-sdk-checksum-algorithm", header_value);
286 }
287 if let ::std::option::Option::Some(inner_19) = &input.checksum_crc32 {
288 let formatted_20 = inner_19.as_str();
289 let header_value = formatted_20;
290 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
291 ::aws_smithy_types::error::operation::BuildError::invalid_field(
292 "checksum_crc32",
293 format!("`{}` cannot be used as a header value: {}", &header_value, err),
294 )
295 })?;
296 builder = builder.header("x-amz-checksum-crc32", header_value);
297 }
298 if let ::std::option::Option::Some(inner_21) = &input.checksum_crc32_c {
299 let formatted_22 = inner_21.as_str();
300 let header_value = formatted_22;
301 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
302 ::aws_smithy_types::error::operation::BuildError::invalid_field(
303 "checksum_crc32_c",
304 format!("`{}` cannot be used as a header value: {}", &header_value, err),
305 )
306 })?;
307 builder = builder.header("x-amz-checksum-crc32c", header_value);
308 }
309 if let ::std::option::Option::Some(inner_23) = &input.checksum_sha1 {
310 let formatted_24 = inner_23.as_str();
311 let header_value = formatted_24;
312 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
313 ::aws_smithy_types::error::operation::BuildError::invalid_field(
314 "checksum_sha1",
315 format!("`{}` cannot be used as a header value: {}", &header_value, err),
316 )
317 })?;
318 builder = builder.header("x-amz-checksum-sha1", header_value);
319 }
320 if let ::std::option::Option::Some(inner_25) = &input.checksum_sha256 {
321 let formatted_26 = inner_25.as_str();
322 let header_value = formatted_26;
323 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
324 ::aws_smithy_types::error::operation::BuildError::invalid_field(
325 "checksum_sha256",
326 format!("`{}` cannot be used as a header value: {}", &header_value, err),
327 )
328 })?;
329 builder = builder.header("x-amz-checksum-sha256", header_value);
330 }
331 if let ::std::option::Option::Some(inner_27) = &input.expires {
332 let formatted_28 = inner_27.fmt(::aws_smithy_types::date_time::Format::HttpDate)?;
333 let header_value = formatted_28;
334 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
335 ::aws_smithy_types::error::operation::BuildError::invalid_field(
336 "expires",
337 format!("`{}` cannot be used as a header value: {}", &header_value, err),
338 )
339 })?;
340 builder = builder.header("Expires", header_value);
341 }
342 if let ::std::option::Option::Some(inner_29) = &input.if_match {
343 let formatted_30 = inner_29.as_str();
344 let header_value = formatted_30;
345 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
346 ::aws_smithy_types::error::operation::BuildError::invalid_field(
347 "if_match",
348 format!("`{}` cannot be used as a header value: {}", &header_value, err),
349 )
350 })?;
351 builder = builder.header("If-Match", header_value);
352 }
353 if let ::std::option::Option::Some(inner_31) = &input.if_none_match {
354 let formatted_32 = inner_31.as_str();
355 let header_value = formatted_32;
356 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
357 ::aws_smithy_types::error::operation::BuildError::invalid_field(
358 "if_none_match",
359 format!("`{}` cannot be used as a header value: {}", &header_value, err),
360 )
361 })?;
362 builder = builder.header("If-None-Match", header_value);
363 }
364 if let ::std::option::Option::Some(inner_33) = &input.grant_full_control {
365 let formatted_34 = inner_33.as_str();
366 let header_value = formatted_34;
367 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
368 ::aws_smithy_types::error::operation::BuildError::invalid_field(
369 "grant_full_control",
370 format!("`{}` cannot be used as a header value: {}", &header_value, err),
371 )
372 })?;
373 builder = builder.header("x-amz-grant-full-control", header_value);
374 }
375 if let ::std::option::Option::Some(inner_35) = &input.grant_read {
376 let formatted_36 = inner_35.as_str();
377 let header_value = formatted_36;
378 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
379 ::aws_smithy_types::error::operation::BuildError::invalid_field(
380 "grant_read",
381 format!("`{}` cannot be used as a header value: {}", &header_value, err),
382 )
383 })?;
384 builder = builder.header("x-amz-grant-read", header_value);
385 }
386 if let ::std::option::Option::Some(inner_37) = &input.grant_read_acp {
387 let formatted_38 = inner_37.as_str();
388 let header_value = formatted_38;
389 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
390 ::aws_smithy_types::error::operation::BuildError::invalid_field(
391 "grant_read_acp",
392 format!("`{}` cannot be used as a header value: {}", &header_value, err),
393 )
394 })?;
395 builder = builder.header("x-amz-grant-read-acp", header_value);
396 }
397 if let ::std::option::Option::Some(inner_39) = &input.grant_write_acp {
398 let formatted_40 = inner_39.as_str();
399 let header_value = formatted_40;
400 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
401 ::aws_smithy_types::error::operation::BuildError::invalid_field(
402 "grant_write_acp",
403 format!("`{}` cannot be used as a header value: {}", &header_value, err),
404 )
405 })?;
406 builder = builder.header("x-amz-grant-write-acp", header_value);
407 }
408 if let ::std::option::Option::Some(inner_41) = &input.write_offset_bytes {
409 let mut encoder = ::aws_smithy_types::primitive::Encoder::from(*inner_41);
410 let formatted_42 = encoder.encode();
411 let header_value = formatted_42;
412 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
413 ::aws_smithy_types::error::operation::BuildError::invalid_field(
414 "write_offset_bytes",
415 format!("`{}` cannot be used as a header value: {}", &header_value, err),
416 )
417 })?;
418 builder = builder.header("x-amz-write-offset-bytes", header_value);
419 }
420 if let ::std::option::Option::Some(inner_43) = &input.server_side_encryption {
421 let formatted_44 = inner_43.as_str();
422 let header_value = formatted_44;
423 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
424 ::aws_smithy_types::error::operation::BuildError::invalid_field(
425 "server_side_encryption",
426 format!("`{}` cannot be used as a header value: {}", &header_value, err),
427 )
428 })?;
429 builder = builder.header("x-amz-server-side-encryption", header_value);
430 }
431 if let ::std::option::Option::Some(inner_45) = &input.storage_class {
432 let formatted_46 = inner_45.as_str();
433 let header_value = formatted_46;
434 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
435 ::aws_smithy_types::error::operation::BuildError::invalid_field(
436 "storage_class",
437 format!("`{}` cannot be used as a header value: {}", &header_value, err),
438 )
439 })?;
440 builder = builder.header("x-amz-storage-class", header_value);
441 }
442 if let ::std::option::Option::Some(inner_47) = &input.website_redirect_location {
443 let formatted_48 = inner_47.as_str();
444 let header_value = formatted_48;
445 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
446 ::aws_smithy_types::error::operation::BuildError::invalid_field(
447 "website_redirect_location",
448 format!("`{}` cannot be used as a header value: {}", &header_value, err),
449 )
450 })?;
451 builder = builder.header("x-amz-website-redirect-location", header_value);
452 }
453 if let ::std::option::Option::Some(inner_49) = &input.sse_customer_algorithm {
454 let formatted_50 = inner_49.as_str();
455 let header_value = formatted_50;
456 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
457 ::aws_smithy_types::error::operation::BuildError::invalid_field(
458 "sse_customer_algorithm",
459 format!("`{}` cannot be used as a header value: {}", &header_value, err),
460 )
461 })?;
462 builder = builder.header("x-amz-server-side-encryption-customer-algorithm", header_value);
463 }
464 if let ::std::option::Option::Some(inner_51) = &input.sse_customer_key {
465 let formatted_52 = inner_51.as_str();
466 let header_value = formatted_52;
467 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
468 ::aws_smithy_types::error::operation::BuildError::invalid_field(
469 "sse_customer_key",
470 format!("`{}` cannot be used as a header value: {}", &"*** Sensitive Data Redacted ***", err),
471 )
472 })?;
473 builder = builder.header("x-amz-server-side-encryption-customer-key", header_value);
474 }
475 if let ::std::option::Option::Some(inner_53) = &input.sse_customer_key_md5 {
476 let formatted_54 = inner_53.as_str();
477 let header_value = formatted_54;
478 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
479 ::aws_smithy_types::error::operation::BuildError::invalid_field(
480 "sse_customer_key_md5",
481 format!("`{}` cannot be used as a header value: {}", &header_value, err),
482 )
483 })?;
484 builder = builder.header("x-amz-server-side-encryption-customer-key-MD5", header_value);
485 }
486 if let ::std::option::Option::Some(inner_55) = &input.ssekms_key_id {
487 let formatted_56 = inner_55.as_str();
488 let header_value = formatted_56;
489 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
490 ::aws_smithy_types::error::operation::BuildError::invalid_field(
491 "ssekms_key_id",
492 format!("`{}` cannot be used as a header value: {}", &"*** Sensitive Data Redacted ***", err),
493 )
494 })?;
495 builder = builder.header("x-amz-server-side-encryption-aws-kms-key-id", header_value);
496 }
497 if let ::std::option::Option::Some(inner_57) = &input.ssekms_encryption_context {
498 let formatted_58 = inner_57.as_str();
499 let header_value = formatted_58;
500 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
501 ::aws_smithy_types::error::operation::BuildError::invalid_field(
502 "ssekms_encryption_context",
503 format!("`{}` cannot be used as a header value: {}", &"*** Sensitive Data Redacted ***", err),
504 )
505 })?;
506 builder = builder.header("x-amz-server-side-encryption-context", header_value);
507 }
508 if let ::std::option::Option::Some(inner_59) = &input.bucket_key_enabled {
509 let mut encoder = ::aws_smithy_types::primitive::Encoder::from(*inner_59);
510 let formatted_60 = encoder.encode();
511 let header_value = formatted_60;
512 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
513 ::aws_smithy_types::error::operation::BuildError::invalid_field(
514 "bucket_key_enabled",
515 format!("`{}` cannot be used as a header value: {}", &header_value, err),
516 )
517 })?;
518 builder = builder.header("x-amz-server-side-encryption-bucket-key-enabled", header_value);
519 }
520 if let ::std::option::Option::Some(inner_61) = &input.request_payer {
521 let formatted_62 = inner_61.as_str();
522 let header_value = formatted_62;
523 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
524 ::aws_smithy_types::error::operation::BuildError::invalid_field(
525 "request_payer",
526 format!("`{}` cannot be used as a header value: {}", &header_value, err),
527 )
528 })?;
529 builder = builder.header("x-amz-request-payer", header_value);
530 }
531 if let ::std::option::Option::Some(inner_63) = &input.tagging {
532 let formatted_64 = inner_63.as_str();
533 let header_value = formatted_64;
534 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
535 ::aws_smithy_types::error::operation::BuildError::invalid_field(
536 "tagging",
537 format!("`{}` cannot be used as a header value: {}", &header_value, err),
538 )
539 })?;
540 builder = builder.header("x-amz-tagging", header_value);
541 }
542 if let ::std::option::Option::Some(inner_65) = &input.object_lock_mode {
543 let formatted_66 = inner_65.as_str();
544 let header_value = formatted_66;
545 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
546 ::aws_smithy_types::error::operation::BuildError::invalid_field(
547 "object_lock_mode",
548 format!("`{}` cannot be used as a header value: {}", &header_value, err),
549 )
550 })?;
551 builder = builder.header("x-amz-object-lock-mode", header_value);
552 }
553 if let ::std::option::Option::Some(inner_67) = &input.object_lock_retain_until_date {
554 let formatted_68 = inner_67.fmt(::aws_smithy_types::date_time::Format::DateTime)?;
555 let header_value = formatted_68;
556 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
557 ::aws_smithy_types::error::operation::BuildError::invalid_field(
558 "object_lock_retain_until_date",
559 format!("`{}` cannot be used as a header value: {}", &header_value, err),
560 )
561 })?;
562 builder = builder.header("x-amz-object-lock-retain-until-date", header_value);
563 }
564 if let ::std::option::Option::Some(inner_69) = &input.object_lock_legal_hold_status {
565 let formatted_70 = inner_69.as_str();
566 let header_value = formatted_70;
567 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
568 ::aws_smithy_types::error::operation::BuildError::invalid_field(
569 "object_lock_legal_hold_status",
570 format!("`{}` cannot be used as a header value: {}", &header_value, err),
571 )
572 })?;
573 builder = builder.header("x-amz-object-lock-legal-hold", header_value);
574 }
575 if let ::std::option::Option::Some(inner_71) = &input.expected_bucket_owner {
576 let formatted_72 = inner_71.as_str();
577 let header_value = formatted_72;
578 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
579 ::aws_smithy_types::error::operation::BuildError::invalid_field(
580 "expected_bucket_owner",
581 format!("`{}` cannot be used as a header value: {}", &header_value, err),
582 )
583 })?;
584 builder = builder.header("x-amz-expected-bucket-owner", header_value);
585 }
586 if let ::std::option::Option::Some(inner_73) = &input.metadata {
587 {
588 for (k, v) in inner_73 {
589 use std::str::FromStr;
590 let header_name = http::header::HeaderName::from_str(&format!("{}{}", "x-amz-meta-", &k)).map_err(|err| {
591 ::aws_smithy_types::error::operation::BuildError::invalid_field(
592 "metadata",
593 format!("`{k}` cannot be used as a header name: {err}"),
594 )
595 })?;
596 let header_value = v.as_str();
597 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
598 ::aws_smithy_types::error::operation::BuildError::invalid_field(
599 "metadata",
600 format!("`{}` cannot be used as a header value: {}", v, err),
601 )
602 })?;
603 builder = builder.header(header_name, header_value);
604 }
605 }
606 }
607 Ok(builder)
608}