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) -> 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("UploadId") /* UploadId com.amazonaws.s3.synthetic#ListPartsOutput$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") /* PartNumberMarker com.amazonaws.s3.synthetic#ListPartsOutput$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") /* Bucket com.amazonaws.s3.synthetic#ListPartsOutput$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") /* Parts com.amazonaws.s3.synthetic#ListPartsOutput$Parts */ =>  {
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") /* Initiator com.amazonaws.s3.synthetic#ListPartsOutput$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") /* Key com.amazonaws.s3.synthetic#ListPartsOutput$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}