aws_sdk_s3/protocol_serde/
shape_list_object_versions.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(clippy::unnecessary_wraps)]
3pub fn de_list_object_versions_http_error(
4    _response_status: u16,
5    _response_headers: &::aws_smithy_runtime_api::http::Headers,
6    _response_body: &[u8],
7) -> std::result::Result<
8    crate::operation::list_object_versions::ListObjectVersionsOutput,
9    crate::operation::list_object_versions::ListObjectVersionsError,
10> {
11    #[allow(unused_mut)]
12    let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(_response_status, _response_headers, _response_body)
13        .map_err(crate::operation::list_object_versions::ListObjectVersionsError::unhandled)?;
14    generic_builder = crate::s3_request_id::apply_extended_request_id(generic_builder, _response_headers);
15    generic_builder = ::aws_types::request_id::apply_request_id(generic_builder, _response_headers);
16    let generic = generic_builder.build();
17    Err(crate::operation::list_object_versions::ListObjectVersionsError::generic(generic))
18}
19
20#[allow(clippy::unnecessary_wraps)]
21pub fn de_list_object_versions_http_response(
22    _response_status: u16,
23    _response_headers: &::aws_smithy_runtime_api::http::Headers,
24    _response_body: &[u8],
25) -> std::result::Result<
26    crate::operation::list_object_versions::ListObjectVersionsOutput,
27    crate::operation::list_object_versions::ListObjectVersionsError,
28> {
29    Ok({
30        #[allow(unused_mut)]
31        let mut output = crate::operation::list_object_versions::builders::ListObjectVersionsOutputBuilder::default();
32        output = crate::protocol_serde::shape_list_object_versions::de_list_object_versions(_response_body, output)
33            .map_err(crate::operation::list_object_versions::ListObjectVersionsError::unhandled)?;
34        output = output.set_request_charged(
35            crate::protocol_serde::shape_list_object_versions_output::de_request_charged_header(_response_headers).map_err(|_| {
36                crate::operation::list_object_versions::ListObjectVersionsError::unhandled(
37                    "Failed to parse RequestCharged from header `x-amz-request-charged",
38                )
39            })?,
40        );
41        output._set_extended_request_id(crate::s3_request_id::RequestIdExt::extended_request_id(_response_headers).map(str::to_string));
42        output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
43        output.build()
44    })
45}
46
47pub fn ser_list_object_versions_headers(
48    input: &crate::operation::list_object_versions::ListObjectVersionsInput,
49    mut builder: ::http::request::Builder,
50) -> std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
51    if let ::std::option::Option::Some(inner_1) = &input.expected_bucket_owner {
52        let formatted_2 = inner_1.as_str();
53        let header_value = formatted_2;
54        let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
55            ::aws_smithy_types::error::operation::BuildError::invalid_field(
56                "expected_bucket_owner",
57                format!("`{}` cannot be used as a header value: {}", &header_value, err),
58            )
59        })?;
60        builder = builder.header("x-amz-expected-bucket-owner", header_value);
61    }
62    if let ::std::option::Option::Some(inner_3) = &input.request_payer {
63        let formatted_4 = inner_3.as_str();
64        let header_value = formatted_4;
65        let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
66            ::aws_smithy_types::error::operation::BuildError::invalid_field(
67                "request_payer",
68                format!("`{}` cannot be used as a header value: {}", &header_value, err),
69            )
70        })?;
71        builder = builder.header("x-amz-request-payer", header_value);
72    }
73    if let ::std::option::Option::Some(inner_5) = &input.optional_object_attributes {
74        // Empty vec in header is serialized as an empty string
75        if inner_5.is_empty() {
76            builder = builder.header("x-amz-optional-object-attributes", "");
77        } else {
78            for inner_6 in inner_5 {
79                let formatted_7 = ::aws_smithy_http::header::quote_header_value(inner_6.as_str());
80                let header_value = formatted_7;
81                let header_value: ::http::HeaderValue = header_value.parse().map_err(|err| {
82                    ::aws_smithy_types::error::operation::BuildError::invalid_field(
83                        "optional_object_attributes",
84                        format!("`{}` cannot be used as a header value: {}", &header_value, err),
85                    )
86                })?;
87                builder = builder.header("x-amz-optional-object-attributes", header_value);
88            }
89        }
90    }
91    Ok(builder)
92}
93
94#[allow(unused_mut)]
95pub fn de_list_object_versions(
96    inp: &[u8],
97    mut builder: crate::operation::list_object_versions::builders::ListObjectVersionsOutputBuilder,
98) -> std::result::Result<crate::operation::list_object_versions::builders::ListObjectVersionsOutputBuilder, ::aws_smithy_xml::decode::XmlDecodeError>
99{
100    let mut doc = ::aws_smithy_xml::decode::Document::try_from(inp)?;
101
102    #[allow(unused_mut)]
103    let mut decoder = doc.root_element()?;
104    #[allow(unused_variables)]
105    let start_el = decoder.start_el();
106    if !start_el.matches("ListVersionsResult") {
107        return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
108            "encountered invalid XML root: expected ListVersionsResult but got {:?}. This is likely a bug in the SDK.",
109            start_el
110        )));
111    }
112    while let Some(mut tag) = decoder.next_tag() {
113        match tag.start_el() {
114            s if s.matches("CommonPrefixes") /* CommonPrefixes com.amazonaws.s3.synthetic#ListObjectVersionsOutput$CommonPrefixes */ =>  {
115                let var_8 =
116                    Some(
117                        Result::<::std::vec::Vec::<crate::types::CommonPrefix>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
118                            let mut list_9 = builder.common_prefixes.take().unwrap_or_default();
119                            list_9.push(
120                                crate::protocol_serde::shape_common_prefix::de_common_prefix(&mut tag)
121                                ?
122                            );
123                            list_9
124                        })
125                        ?
126                    )
127                ;
128                builder = builder.set_common_prefixes(var_8);
129            }
130            ,
131            s if s.matches("NextKeyMarker") /* NextKeyMarker com.amazonaws.s3.synthetic#ListObjectVersionsOutput$NextKeyMarker */ =>  {
132                let var_10 =
133                    Some(
134                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
135                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
136                            .into()
137                        )
138                        ?
139                    )
140                ;
141                builder = builder.set_next_key_marker(var_10);
142            }
143            ,
144            s if s.matches("Delimiter") /* Delimiter com.amazonaws.s3.synthetic#ListObjectVersionsOutput$Delimiter */ =>  {
145                let var_11 =
146                    Some(
147                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
148                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
149                            .into()
150                        )
151                        ?
152                    )
153                ;
154                builder = builder.set_delimiter(var_11);
155            }
156            ,
157            s if s.matches("EncodingType") /* EncodingType com.amazonaws.s3.synthetic#ListObjectVersionsOutput$EncodingType */ =>  {
158                let var_12 =
159                    Some(
160                        Result::<crate::types::EncodingType, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
161                            crate::types::EncodingType::from(
162                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
163                            )
164                        )
165                        ?
166                    )
167                ;
168                builder = builder.set_encoding_type(var_12);
169            }
170            ,
171            s if s.matches("IsTruncated") /* IsTruncated com.amazonaws.s3.synthetic#ListObjectVersionsOutput$IsTruncated */ =>  {
172                let var_13 =
173                    Some(
174                         {
175                            <bool as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
176                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
177                            )
178                            .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (boolean: `com.amazonaws.s3#IsTruncated`)"))
179                        }
180                        ?
181                    )
182                ;
183                builder = builder.set_is_truncated(var_13);
184            }
185            ,
186            s if s.matches("NextVersionIdMarker") /* NextVersionIdMarker com.amazonaws.s3.synthetic#ListObjectVersionsOutput$NextVersionIdMarker */ =>  {
187                let var_14 =
188                    Some(
189                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
190                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
191                            .into()
192                        )
193                        ?
194                    )
195                ;
196                builder = builder.set_next_version_id_marker(var_14);
197            }
198            ,
199            s if s.matches("Prefix") /* Prefix com.amazonaws.s3.synthetic#ListObjectVersionsOutput$Prefix */ =>  {
200                let var_15 =
201                    Some(
202                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
203                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
204                            .into()
205                        )
206                        ?
207                    )
208                ;
209                builder = builder.set_prefix(var_15);
210            }
211            ,
212            s if s.matches("Name") /* Name com.amazonaws.s3.synthetic#ListObjectVersionsOutput$Name */ =>  {
213                let var_16 =
214                    Some(
215                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
216                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
217                            .into()
218                        )
219                        ?
220                    )
221                ;
222                builder = builder.set_name(var_16);
223            }
224            ,
225            s if s.matches("VersionIdMarker") /* VersionIdMarker com.amazonaws.s3.synthetic#ListObjectVersionsOutput$VersionIdMarker */ =>  {
226                let var_17 =
227                    Some(
228                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
229                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
230                            .into()
231                        )
232                        ?
233                    )
234                ;
235                builder = builder.set_version_id_marker(var_17);
236            }
237            ,
238            s if s.matches("Version") /* Versions com.amazonaws.s3.synthetic#ListObjectVersionsOutput$Versions */ =>  {
239                let var_18 =
240                    Some(
241                        Result::<::std::vec::Vec::<crate::types::ObjectVersion>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
242                            let mut list_19 = builder.versions.take().unwrap_or_default();
243                            list_19.push(
244                                crate::protocol_serde::shape_object_version::de_object_version(&mut tag)
245                                ?
246                            );
247                            list_19
248                        })
249                        ?
250                    )
251                ;
252                builder = builder.set_versions(var_18);
253            }
254            ,
255            s if s.matches("MaxKeys") /* MaxKeys com.amazonaws.s3.synthetic#ListObjectVersionsOutput$MaxKeys */ =>  {
256                let var_20 =
257                    Some(
258                         {
259                            <i32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
260                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
261                            )
262                            .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (integer: `com.amazonaws.s3#MaxKeys`)"))
263                        }
264                        ?
265                    )
266                ;
267                builder = builder.set_max_keys(var_20);
268            }
269            ,
270            s if s.matches("DeleteMarker") /* DeleteMarkers com.amazonaws.s3.synthetic#ListObjectVersionsOutput$DeleteMarkers */ =>  {
271                let var_21 =
272                    Some(
273                        Result::<::std::vec::Vec::<crate::types::DeleteMarkerEntry>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
274                            let mut list_22 = builder.delete_markers.take().unwrap_or_default();
275                            list_22.push(
276                                crate::protocol_serde::shape_delete_marker_entry::de_delete_marker_entry(&mut tag)
277                                ?
278                            );
279                            list_22
280                        })
281                        ?
282                    )
283                ;
284                builder = builder.set_delete_markers(var_21);
285            }
286            ,
287            s if s.matches("KeyMarker") /* KeyMarker com.amazonaws.s3.synthetic#ListObjectVersionsOutput$KeyMarker */ =>  {
288                let var_23 =
289                    Some(
290                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
291                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
292                            .into()
293                        )
294                        ?
295                    )
296                ;
297                builder = builder.set_key_marker(var_23);
298            }
299            ,
300            _ => {}
301        }
302    }
303    Ok(builder)
304}