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