aws_sdk_s3/protocol_serde/
shape_list_parts.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[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) -> std::result::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") /* Owner com.amazonaws.s3.synthetic#ListPartsOutput$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") /* NextPartNumberMarker com.amazonaws.s3.synthetic#ListPartsOutput$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") /* StorageClass com.amazonaws.s3.synthetic#ListPartsOutput$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") /* ChecksumAlgorithm com.amazonaws.s3.synthetic#ListPartsOutput$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") /* IsTruncated com.amazonaws.s3.synthetic#ListPartsOutput$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") /* MaxParts com.amazonaws.s3.synthetic#ListPartsOutput$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("ChecksumType") /* ChecksumType com.amazonaws.s3.synthetic#ListPartsOutput$ChecksumType */ =>  {
211                let var_17 =
212                    Some(
213                        Result::<crate::types::ChecksumType, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
214                            crate::types::ChecksumType::from(
215                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
216                            )
217                        )
218                        ?
219                    )
220                ;
221                builder = builder.set_checksum_type(var_17);
222            }
223            ,
224            s if s.matches("UploadId") /* UploadId com.amazonaws.s3.synthetic#ListPartsOutput$UploadId */ =>  {
225                let var_18 =
226                    Some(
227                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
228                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
229                            .into()
230                        )
231                        ?
232                    )
233                ;
234                builder = builder.set_upload_id(var_18);
235            }
236            ,
237            s if s.matches("PartNumberMarker") /* PartNumberMarker com.amazonaws.s3.synthetic#ListPartsOutput$PartNumberMarker */ =>  {
238                let var_19 =
239                    Some(
240                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
241                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
242                            .into()
243                        )
244                        ?
245                    )
246                ;
247                builder = builder.set_part_number_marker(var_19);
248            }
249            ,
250            s if s.matches("Bucket") /* Bucket com.amazonaws.s3.synthetic#ListPartsOutput$Bucket */ =>  {
251                let var_20 =
252                    Some(
253                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
254                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
255                            .into()
256                        )
257                        ?
258                    )
259                ;
260                builder = builder.set_bucket(var_20);
261            }
262            ,
263            s if s.matches("Part") /* Parts com.amazonaws.s3.synthetic#ListPartsOutput$Parts */ =>  {
264                let var_21 =
265                    Some(
266                        Result::<::std::vec::Vec::<crate::types::Part>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
267                            let mut list_22 = builder.parts.take().unwrap_or_default();
268                            list_22.push(
269                                crate::protocol_serde::shape_part::de_part(&mut tag)
270                                ?
271                            );
272                            list_22
273                        })
274                        ?
275                    )
276                ;
277                builder = builder.set_parts(var_21);
278            }
279            ,
280            s if s.matches("Initiator") /* Initiator com.amazonaws.s3.synthetic#ListPartsOutput$Initiator */ =>  {
281                let var_23 =
282                    Some(
283                        crate::protocol_serde::shape_initiator::de_initiator(&mut tag)
284                        ?
285                    )
286                ;
287                builder = builder.set_initiator(var_23);
288            }
289            ,
290            s if s.matches("Key") /* Key com.amazonaws.s3.synthetic#ListPartsOutput$Key */ =>  {
291                let var_24 =
292                    Some(
293                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
294                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
295                            .into()
296                        )
297                        ?
298                    )
299                ;
300                builder = builder.set_key(var_24);
301            }
302            ,
303            _ => {}
304        }
305    }
306    Ok(builder)
307}