aws_sdk_s3/protocol_serde/
shape_list_parts.rs1#[allow(clippy::unnecessary_wraps)]
3pub fn de_list_parts_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::list_parts::ListPartsOutput, crate::operation::list_parts::ListPartsError> {
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::list_parts::ListPartsError::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 Err(crate::operation::list_parts::ListPartsError::generic(generic))
15}
16
17#[allow(clippy::unnecessary_wraps)]
18pub fn de_list_parts_http_response(
19 _response_status: u16,
20 _response_headers: &::aws_smithy_runtime_api::http::Headers,
21 _response_body: &[u8],
22) -> std::result::Result<crate::operation::list_parts::ListPartsOutput, crate::operation::list_parts::ListPartsError> {
23 Ok({
24 #[allow(unused_mut)]
25 let mut output = crate::operation::list_parts::builders::ListPartsOutputBuilder::default();
26 output = crate::protocol_serde::shape_list_parts::de_list_parts(_response_body, output)
27 .map_err(crate::operation::list_parts::ListPartsError::unhandled)?;
28 output = output.set_abort_date(
29 crate::protocol_serde::shape_list_parts_output::de_abort_date_header(_response_headers)
30 .map_err(|_| crate::operation::list_parts::ListPartsError::unhandled("Failed to parse AbortDate from header `x-amz-abort-date"))?,
31 );
32 output = output.set_abort_rule_id(
33 crate::protocol_serde::shape_list_parts_output::de_abort_rule_id_header(_response_headers).map_err(|_| {
34 crate::operation::list_parts::ListPartsError::unhandled("Failed to parse AbortRuleId from header `x-amz-abort-rule-id")
35 })?,
36 );
37 output = output.set_request_charged(
38 crate::protocol_serde::shape_list_parts_output::de_request_charged_header(_response_headers).map_err(|_| {
39 crate::operation::list_parts::ListPartsError::unhandled("Failed to parse RequestCharged from header `x-amz-request-charged")
40 })?,
41 );
42 output._set_extended_request_id(crate::s3_request_id::RequestIdExt::extended_request_id(_response_headers).map(str::to_string));
43 output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
44 output.build()
45 })
46}
47
48pub fn ser_list_parts_headers(
49 input: &crate::operation::list_parts::ListPartsInput,
50 mut builder: ::http::request::Builder,
51) -> std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
52 if let ::std::option::Option::Some(inner_1) = &input.request_payer {
53 let formatted_2 = inner_1.as_str();
54 let header_value = formatted_2;
55 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
56 ::aws_smithy_types::error::operation::BuildError::invalid_field(
57 "request_payer",
58 format!("`{}` cannot be used as a header value: {}", &header_value, err),
59 )
60 })?;
61 builder = builder.header("x-amz-request-payer", header_value);
62 }
63 if let ::std::option::Option::Some(inner_3) = &input.expected_bucket_owner {
64 let formatted_4 = inner_3.as_str();
65 let header_value = formatted_4;
66 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
67 ::aws_smithy_types::error::operation::BuildError::invalid_field(
68 "expected_bucket_owner",
69 format!("`{}` cannot be used as a header value: {}", &header_value, err),
70 )
71 })?;
72 builder = builder.header("x-amz-expected-bucket-owner", header_value);
73 }
74 if let ::std::option::Option::Some(inner_5) = &input.sse_customer_algorithm {
75 let formatted_6 = inner_5.as_str();
76 let header_value = formatted_6;
77 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
78 ::aws_smithy_types::error::operation::BuildError::invalid_field(
79 "sse_customer_algorithm",
80 format!("`{}` cannot be used as a header value: {}", &header_value, err),
81 )
82 })?;
83 builder = builder.header("x-amz-server-side-encryption-customer-algorithm", header_value);
84 }
85 if let ::std::option::Option::Some(inner_7) = &input.sse_customer_key {
86 let formatted_8 = inner_7.as_str();
87 let header_value = formatted_8;
88 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
89 ::aws_smithy_types::error::operation::BuildError::invalid_field(
90 "sse_customer_key",
91 format!("`{}` cannot be used as a header value: {}", &"*** Sensitive Data Redacted ***", err),
92 )
93 })?;
94 builder = builder.header("x-amz-server-side-encryption-customer-key", header_value);
95 }
96 if let ::std::option::Option::Some(inner_9) = &input.sse_customer_key_md5 {
97 let formatted_10 = inner_9.as_str();
98 let header_value = formatted_10;
99 let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
100 ::aws_smithy_types::error::operation::BuildError::invalid_field(
101 "sse_customer_key_md5",
102 format!("`{}` cannot be used as a header value: {}", &header_value, err),
103 )
104 })?;
105 builder = builder.header("x-amz-server-side-encryption-customer-key-MD5", header_value);
106 }
107 Ok(builder)
108}
109
110#[allow(unused_mut)]
111pub fn de_list_parts(
112 inp: &[u8],
113 mut builder: crate::operation::list_parts::builders::ListPartsOutputBuilder,
114) -> Result<crate::operation::list_parts::builders::ListPartsOutputBuilder, ::aws_smithy_xml::decode::XmlDecodeError> {
115 let mut doc = ::aws_smithy_xml::decode::Document::try_from(inp)?;
116
117 #[allow(unused_mut)]
118 let mut decoder = doc.root_element()?;
119 #[allow(unused_variables)]
120 let start_el = decoder.start_el();
121 if !start_el.matches("ListPartsResult") {
122 return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
123 "encountered invalid XML root: expected ListPartsResult but got {:?}. This is likely a bug in the SDK.",
124 start_el
125 )));
126 }
127 while let Some(mut tag) = decoder.next_tag() {
128 match tag.start_el() {
129 s if s.matches("Owner") => {
130 let var_11 =
131 Some(
132 crate::protocol_serde::shape_owner::de_owner(&mut tag)
133 ?
134 )
135 ;
136 builder = builder.set_owner(var_11);
137 }
138 ,
139 s if s.matches("NextPartNumberMarker") => {
140 let var_12 =
141 Some(
142 Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
143 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
144 .into()
145 )
146 ?
147 )
148 ;
149 builder = builder.set_next_part_number_marker(var_12);
150 }
151 ,
152 s if s.matches("StorageClass") => {
153 let var_13 =
154 Some(
155 Result::<crate::types::StorageClass, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
156 crate::types::StorageClass::from(
157 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
158 )
159 )
160 ?
161 )
162 ;
163 builder = builder.set_storage_class(var_13);
164 }
165 ,
166 s if s.matches("ChecksumAlgorithm") => {
167 let var_14 =
168 Some(
169 Result::<crate::types::ChecksumAlgorithm, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
170 crate::types::ChecksumAlgorithm::from(
171 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
172 )
173 )
174 ?
175 )
176 ;
177 builder = builder.set_checksum_algorithm(var_14);
178 }
179 ,
180 s if s.matches("IsTruncated") => {
181 let var_15 =
182 Some(
183 {
184 <bool as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
185 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
186 )
187 .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (boolean: `com.amazonaws.s3#IsTruncated`)"))
188 }
189 ?
190 )
191 ;
192 builder = builder.set_is_truncated(var_15);
193 }
194 ,
195 s if s.matches("MaxParts") => {
196 let var_16 =
197 Some(
198 {
199 <i32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
200 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
201 )
202 .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (integer: `com.amazonaws.s3#MaxParts`)"))
203 }
204 ?
205 )
206 ;
207 builder = builder.set_max_parts(var_16);
208 }
209 ,
210 s if s.matches("UploadId") => {
211 let var_17 =
212 Some(
213 Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
214 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
215 .into()
216 )
217 ?
218 )
219 ;
220 builder = builder.set_upload_id(var_17);
221 }
222 ,
223 s if s.matches("PartNumberMarker") => {
224 let var_18 =
225 Some(
226 Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
227 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
228 .into()
229 )
230 ?
231 )
232 ;
233 builder = builder.set_part_number_marker(var_18);
234 }
235 ,
236 s if s.matches("Bucket") => {
237 let var_19 =
238 Some(
239 Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
240 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
241 .into()
242 )
243 ?
244 )
245 ;
246 builder = builder.set_bucket(var_19);
247 }
248 ,
249 s if s.matches("Part") => {
250 let var_20 =
251 Some(
252 Result::<::std::vec::Vec::<crate::types::Part>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
253 let mut list_21 = builder.parts.take().unwrap_or_default();
254 list_21.push(
255 crate::protocol_serde::shape_part::de_part(&mut tag)
256 ?
257 );
258 list_21
259 })
260 ?
261 )
262 ;
263 builder = builder.set_parts(var_20);
264 }
265 ,
266 s if s.matches("Initiator") => {
267 let var_22 =
268 Some(
269 crate::protocol_serde::shape_initiator::de_initiator(&mut tag)
270 ?
271 )
272 ;
273 builder = builder.set_initiator(var_22);
274 }
275 ,
276 s if s.matches("Key") => {
277 let var_23 =
278 Some(
279 Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
280 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
281 .into()
282 )
283 ?
284 )
285 ;
286 builder = builder.set_key(var_23);
287 }
288 ,
289 _ => {}
290 }
291 }
292 Ok(builder)
293}