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