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