aws_sdk_s3/protocol_serde/
shape_get_object_attributes.rs
1#[allow(clippy::unnecessary_wraps)]
3pub fn de_get_object_attributes_http_error(
4 _response_status: u16,
5 _response_headers: &::aws_smithy_runtime_api::http::Headers,
6 _response_body: &[u8],
7) -> std::result::Result<
8 crate::operation::get_object_attributes::GetObjectAttributesOutput,
9 crate::operation::get_object_attributes::GetObjectAttributesError,
10> {
11 #[allow(unused_mut)]
12 let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(_response_status, _response_headers, _response_body)
13 .map_err(crate::operation::get_object_attributes::GetObjectAttributesError::unhandled)?;
14 generic_builder = crate::s3_request_id::apply_extended_request_id(generic_builder, _response_headers);
15 generic_builder = ::aws_types::request_id::apply_request_id(generic_builder, _response_headers);
16 let generic = generic_builder.build();
17 let error_code = match generic.code() {
18 Some(code) => code,
19 None => return Err(crate::operation::get_object_attributes::GetObjectAttributesError::unhandled(generic)),
20 };
21
22 let _error_message = generic.message().map(|msg| msg.to_owned());
23 Err(match error_code {
24 "NoSuchKey" => crate::operation::get_object_attributes::GetObjectAttributesError::NoSuchKey({
25 #[allow(unused_mut)]
26 let mut tmp = {
27 #[allow(unused_mut)]
28 let mut output = crate::types::error::builders::NoSuchKeyBuilder::default();
29 output = crate::protocol_serde::shape_no_such_key::de_no_such_key_xml_err(_response_body, output)
30 .map_err(crate::operation::get_object_attributes::GetObjectAttributesError::unhandled)?;
31 let output = output.meta(generic);
32 output.build()
33 };
34 if tmp.message.is_none() {
35 tmp.message = _error_message;
36 }
37 tmp
38 }),
39 _ => crate::operation::get_object_attributes::GetObjectAttributesError::generic(generic),
40 })
41}
42
43#[allow(clippy::unnecessary_wraps)]
44pub fn de_get_object_attributes_http_response(
45 _response_status: u16,
46 _response_headers: &::aws_smithy_runtime_api::http::Headers,
47 _response_body: &[u8],
48) -> std::result::Result<
49 crate::operation::get_object_attributes::GetObjectAttributesOutput,
50 crate::operation::get_object_attributes::GetObjectAttributesError,
51> {
52 Ok({
53 #[allow(unused_mut)]
54 let mut output = crate::operation::get_object_attributes::builders::GetObjectAttributesOutputBuilder::default();
55 output = crate::protocol_serde::shape_get_object_attributes::de_get_object_attributes(_response_body, output)
56 .map_err(crate::operation::get_object_attributes::GetObjectAttributesError::unhandled)?;
57 output = output.set_delete_marker(
58 crate::protocol_serde::shape_get_object_attributes_output::de_delete_marker_header(_response_headers).map_err(|_| {
59 crate::operation::get_object_attributes::GetObjectAttributesError::unhandled(
60 "Failed to parse DeleteMarker from header `x-amz-delete-marker",
61 )
62 })?,
63 );
64 output = output.set_last_modified(
65 crate::protocol_serde::shape_get_object_attributes_output::de_last_modified_header(_response_headers).map_err(|_| {
66 crate::operation::get_object_attributes::GetObjectAttributesError::unhandled(
67 "Failed to parse LastModified from header `Last-Modified",
68 )
69 })?,
70 );
71 output = output.set_request_charged(
72 crate::protocol_serde::shape_get_object_attributes_output::de_request_charged_header(_response_headers).map_err(|_| {
73 crate::operation::get_object_attributes::GetObjectAttributesError::unhandled(
74 "Failed to parse RequestCharged from header `x-amz-request-charged",
75 )
76 })?,
77 );
78 output = output.set_version_id(
79 crate::protocol_serde::shape_get_object_attributes_output::de_version_id_header(_response_headers).map_err(|_| {
80 crate::operation::get_object_attributes::GetObjectAttributesError::unhandled(
81 "Failed to parse VersionId from header `x-amz-version-id",
82 )
83 })?,
84 );
85 output._set_extended_request_id(crate::s3_request_id::RequestIdExt::extended_request_id(_response_headers).map(str::to_string));
86 output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
87 output.build()
88 })
89}
90
91pub fn ser_get_object_attributes_headers(
92 input: &crate::operation::get_object_attributes::GetObjectAttributesInput,
93 mut builder: ::http::request::Builder,
94) -> std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
95 if let ::std::option::Option::Some(inner_1) = &input.max_parts {
96 let mut encoder = ::aws_smithy_types::primitive::Encoder::from(*inner_1);
97 let formatted_2 = encoder.encode();
98 let header_value = formatted_2;
99 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
100 ::aws_smithy_types::error::operation::BuildError::invalid_field(
101 "max_parts",
102 format!("`{}` cannot be used as a header value: {}", &header_value, err),
103 )
104 })?;
105 builder = builder.header("x-amz-max-parts", header_value);
106 }
107 if let ::std::option::Option::Some(inner_3) = &input.part_number_marker {
108 let formatted_4 = inner_3.as_str();
109 let header_value = formatted_4;
110 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
111 ::aws_smithy_types::error::operation::BuildError::invalid_field(
112 "part_number_marker",
113 format!("`{}` cannot be used as a header value: {}", &header_value, err),
114 )
115 })?;
116 builder = builder.header("x-amz-part-number-marker", header_value);
117 }
118 if let ::std::option::Option::Some(inner_5) = &input.sse_customer_algorithm {
119 let formatted_6 = inner_5.as_str();
120 let header_value = formatted_6;
121 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
122 ::aws_smithy_types::error::operation::BuildError::invalid_field(
123 "sse_customer_algorithm",
124 format!("`{}` cannot be used as a header value: {}", &header_value, err),
125 )
126 })?;
127 builder = builder.header("x-amz-server-side-encryption-customer-algorithm", header_value);
128 }
129 if let ::std::option::Option::Some(inner_7) = &input.sse_customer_key {
130 let formatted_8 = inner_7.as_str();
131 let header_value = formatted_8;
132 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
133 ::aws_smithy_types::error::operation::BuildError::invalid_field(
134 "sse_customer_key",
135 format!("`{}` cannot be used as a header value: {}", &"*** Sensitive Data Redacted ***", err),
136 )
137 })?;
138 builder = builder.header("x-amz-server-side-encryption-customer-key", header_value);
139 }
140 if let ::std::option::Option::Some(inner_9) = &input.sse_customer_key_md5 {
141 let formatted_10 = inner_9.as_str();
142 let header_value = formatted_10;
143 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
144 ::aws_smithy_types::error::operation::BuildError::invalid_field(
145 "sse_customer_key_md5",
146 format!("`{}` cannot be used as a header value: {}", &header_value, err),
147 )
148 })?;
149 builder = builder.header("x-amz-server-side-encryption-customer-key-MD5", header_value);
150 }
151 if let ::std::option::Option::Some(inner_11) = &input.request_payer {
152 let formatted_12 = inner_11.as_str();
153 let header_value = formatted_12;
154 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
155 ::aws_smithy_types::error::operation::BuildError::invalid_field(
156 "request_payer",
157 format!("`{}` cannot be used as a header value: {}", &header_value, err),
158 )
159 })?;
160 builder = builder.header("x-amz-request-payer", header_value);
161 }
162 if let ::std::option::Option::Some(inner_13) = &input.expected_bucket_owner {
163 let formatted_14 = inner_13.as_str();
164 let header_value = formatted_14;
165 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
166 ::aws_smithy_types::error::operation::BuildError::invalid_field(
167 "expected_bucket_owner",
168 format!("`{}` cannot be used as a header value: {}", &header_value, err),
169 )
170 })?;
171 builder = builder.header("x-amz-expected-bucket-owner", header_value);
172 }
173 if let ::std::option::Option::Some(inner_15) = &input.object_attributes {
174 if inner_15.is_empty() {
176 builder = builder.header("x-amz-object-attributes", "");
177 } else {
178 for inner_16 in inner_15 {
179 let formatted_17 = ::aws_smithy_http::header::quote_header_value(inner_16.as_str());
180 let header_value = formatted_17;
181 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
182 ::aws_smithy_types::error::operation::BuildError::invalid_field(
183 "object_attributes",
184 format!("`{}` cannot be used as a header value: {}", &header_value, err),
185 )
186 })?;
187 builder = builder.header("x-amz-object-attributes", header_value);
188 }
189 }
190 }
191 Ok(builder)
192}
193
194#[allow(unused_mut)]
195pub fn de_get_object_attributes(
196 inp: &[u8],
197 mut builder: crate::operation::get_object_attributes::builders::GetObjectAttributesOutputBuilder,
198) -> std::result::Result<crate::operation::get_object_attributes::builders::GetObjectAttributesOutputBuilder, ::aws_smithy_xml::decode::XmlDecodeError>
199{
200 let mut doc = ::aws_smithy_xml::decode::Document::try_from(inp)?;
201
202 #[allow(unused_mut)]
203 let mut decoder = doc.root_element()?;
204 #[allow(unused_variables)]
205 let start_el = decoder.start_el();
206 while let Some(mut tag) = decoder.next_tag() {
207 match tag.start_el() {
208 s if s.matches("ETag") => {
209 let var_18 =
210 Some(
211 Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
212 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
213 .into()
214 )
215 ?
216 )
217 ;
218 builder = builder.set_e_tag(var_18);
219 }
220 ,
221 s if s.matches("Checksum") => {
222 let var_19 =
223 Some(
224 crate::protocol_serde::shape_checksum::de_checksum(&mut tag)
225 ?
226 )
227 ;
228 builder = builder.set_checksum(var_19);
229 }
230 ,
231 s if s.matches("StorageClass") => {
232 let var_20 =
233 Some(
234 Result::<crate::types::StorageClass, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
235 crate::types::StorageClass::from(
236 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
237 )
238 )
239 ?
240 )
241 ;
242 builder = builder.set_storage_class(var_20);
243 }
244 ,
245 s if s.matches("ObjectSize") => {
246 let var_21 =
247 Some(
248 {
249 <i64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
250 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
251 )
252 .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (long: `com.amazonaws.s3#ObjectSize`)"))
253 }
254 ?
255 )
256 ;
257 builder = builder.set_object_size(var_21);
258 }
259 ,
260 s if s.matches("ObjectParts") => {
261 let var_22 =
262 Some(
263 crate::protocol_serde::shape_get_object_attributes_parts::de_get_object_attributes_parts(&mut tag)
264 ?
265 )
266 ;
267 builder = builder.set_object_parts(var_22);
268 }
269 ,
270 _ => {}
271 }
272 }
273 Ok(builder)
274}