aws_sdk_s3/protocol_serde/
shape_cors_rule.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(clippy::needless_question_mark)]
3pub fn de_cors_rule(
4    decoder: &mut ::aws_smithy_xml::decode::ScopedDecoder,
5) -> ::std::result::Result<crate::types::CorsRule, ::aws_smithy_xml::decode::XmlDecodeError> {
6    #[allow(unused_mut)]
7    let mut builder = crate::types::CorsRule::builder();
8    while let Some(mut tag) = decoder.next_tag() {
9        match tag.start_el() {
10            s if s.matches("ID") /* ID com.amazonaws.s3#CORSRule$ID */ =>  {
11                let var_1 =
12                    Some(
13                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
14                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
15                            .into()
16                        )
17                        ?
18                    )
19                ;
20                builder = builder.set_id(var_1);
21            }
22            ,
23            s if s.matches("AllowedHeader") /* AllowedHeaders com.amazonaws.s3#CORSRule$AllowedHeaders */ =>  {
24                let var_2 =
25                    Some(
26                        Result::<::std::vec::Vec::<::std::string::String>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
27                            let mut list_3 = builder.allowed_headers.take().unwrap_or_default();
28                            list_3.push(
29                                Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
30                                    ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
31                                    .into()
32                                )
33                                ?
34                            );
35                            list_3
36                        })
37                        ?
38                    )
39                ;
40                builder = builder.set_allowed_headers(var_2);
41            }
42            ,
43            s if s.matches("AllowedMethod") /* AllowedMethods com.amazonaws.s3#CORSRule$AllowedMethods */ =>  {
44                let var_4 =
45                    Some(
46                        Result::<::std::vec::Vec::<::std::string::String>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
47                            let mut list_5 = builder.allowed_methods.take().unwrap_or_default();
48                            list_5.push(
49                                Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
50                                    ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
51                                    .into()
52                                )
53                                ?
54                            );
55                            list_5
56                        })
57                        ?
58                    )
59                ;
60                builder = builder.set_allowed_methods(var_4);
61            }
62            ,
63            s if s.matches("AllowedOrigin") /* AllowedOrigins com.amazonaws.s3#CORSRule$AllowedOrigins */ =>  {
64                let var_6 =
65                    Some(
66                        Result::<::std::vec::Vec::<::std::string::String>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
67                            let mut list_7 = builder.allowed_origins.take().unwrap_or_default();
68                            list_7.push(
69                                Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
70                                    ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
71                                    .into()
72                                )
73                                ?
74                            );
75                            list_7
76                        })
77                        ?
78                    )
79                ;
80                builder = builder.set_allowed_origins(var_6);
81            }
82            ,
83            s if s.matches("ExposeHeader") /* ExposeHeaders com.amazonaws.s3#CORSRule$ExposeHeaders */ =>  {
84                let var_8 =
85                    Some(
86                        Result::<::std::vec::Vec::<::std::string::String>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
87                            let mut list_9 = builder.expose_headers.take().unwrap_or_default();
88                            list_9.push(
89                                Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
90                                    ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
91                                    .into()
92                                )
93                                ?
94                            );
95                            list_9
96                        })
97                        ?
98                    )
99                ;
100                builder = builder.set_expose_headers(var_8);
101            }
102            ,
103            s if s.matches("MaxAgeSeconds") /* MaxAgeSeconds com.amazonaws.s3#CORSRule$MaxAgeSeconds */ =>  {
104                let var_10 =
105                    Some(
106                         {
107                            <i32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
108                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
109                            )
110                            .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (integer: `com.amazonaws.s3#MaxAgeSeconds`)"))
111                        }
112                        ?
113                    )
114                ;
115                builder = builder.set_max_age_seconds(var_10);
116            }
117            ,
118            _ => {}
119        }
120    }
121    Ok(crate::serde_util::cors_rule_correct_errors(builder)
122        .build()
123        .map_err(|_| ::aws_smithy_xml::decode::XmlDecodeError::custom("missing field"))?)
124}
125
126pub fn ser_cors_rule(
127    input: &crate::types::CorsRule,
128    writer: ::aws_smithy_xml::encode::ElWriter,
129) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
130    #[allow(unused_mut)]
131    let mut scope = writer.finish();
132    if let Some(var_11) = &input.id {
133        let mut inner_writer = scope.start_el("ID").finish();
134        inner_writer.data(var_11.as_str());
135    }
136    if let Some(var_12) = &input.allowed_headers {
137        for list_item_13 in var_12 {
138            {
139                let mut inner_writer = scope.start_el("AllowedHeader").finish();
140                inner_writer.data(list_item_13.as_str());
141            }
142        }
143    }
144    {
145        for list_item_14 in &input.allowed_methods {
146            {
147                let mut inner_writer = scope.start_el("AllowedMethod").finish();
148                inner_writer.data(list_item_14.as_str());
149            }
150        }
151    }
152    {
153        for list_item_15 in &input.allowed_origins {
154            {
155                let mut inner_writer = scope.start_el("AllowedOrigin").finish();
156                inner_writer.data(list_item_15.as_str());
157            }
158        }
159    }
160    if let Some(var_16) = &input.expose_headers {
161        for list_item_17 in var_16 {
162            {
163                let mut inner_writer = scope.start_el("ExposeHeader").finish();
164                inner_writer.data(list_item_17.as_str());
165            }
166        }
167    }
168    if let Some(var_18) = &input.max_age_seconds {
169        let mut inner_writer = scope.start_el("MaxAgeSeconds").finish();
170        inner_writer.data(::aws_smithy_types::primitive::Encoder::from(*var_18).encode());
171    }
172    scope.finish();
173    Ok(())
174}