aws_sdk_s3/protocol_serde/
shape_lifecycle_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_lifecycle_rule(
4    decoder: &mut ::aws_smithy_xml::decode::ScopedDecoder,
5) -> ::std::result::Result<crate::types::LifecycleRule, ::aws_smithy_xml::decode::XmlDecodeError> {
6    #[allow(unused_mut)]
7    let mut builder = crate::types::LifecycleRule::builder();
8    while let Some(mut tag) = decoder.next_tag() {
9        match tag.start_el() {
10            s if s.matches("Expiration") /* Expiration com.amazonaws.s3#LifecycleRule$Expiration */ =>  {
11                let var_1 =
12                    Some(
13                        crate::protocol_serde::shape_lifecycle_expiration::de_lifecycle_expiration(&mut tag)
14                        ?
15                    )
16                ;
17                builder = builder.set_expiration(var_1);
18            }
19            ,
20            s if s.matches("ID") /* ID com.amazonaws.s3#LifecycleRule$ID */ =>  {
21                let var_2 =
22                    Some(
23                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
24                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
25                            .into()
26                        )
27                        ?
28                    )
29                ;
30                builder = builder.set_id(var_2);
31            }
32            ,
33            s if s.matches("Prefix") /* Prefix com.amazonaws.s3#LifecycleRule$Prefix */ =>  {
34                let var_3 =
35                    Some(
36                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
37                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
38                            .into()
39                        )
40                        ?
41                    )
42                ;
43                builder = builder.set_prefix(var_3);
44            }
45            ,
46            s if s.matches("Filter") /* Filter com.amazonaws.s3#LifecycleRule$Filter */ =>  {
47                let var_4 =
48                    Some(
49                        crate::protocol_serde::shape_lifecycle_rule_filter::de_lifecycle_rule_filter(&mut tag)
50                        ?
51                    )
52                ;
53                builder = builder.set_filter(var_4);
54            }
55            ,
56            s if s.matches("Status") /* Status com.amazonaws.s3#LifecycleRule$Status */ =>  {
57                let var_5 =
58                    Some(
59                        Result::<crate::types::ExpirationStatus, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
60                            crate::types::ExpirationStatus::from(
61                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
62                            )
63                        )
64                        ?
65                    )
66                ;
67                builder = builder.set_status(var_5);
68            }
69            ,
70            s if s.matches("Transition") /* Transitions com.amazonaws.s3#LifecycleRule$Transitions */ =>  {
71                let var_6 =
72                    Some(
73                        Result::<::std::vec::Vec::<crate::types::Transition>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
74                            let mut list_7 = builder.transitions.take().unwrap_or_default();
75                            list_7.push(
76                                crate::protocol_serde::shape_transition::de_transition(&mut tag)
77                                ?
78                            );
79                            list_7
80                        })
81                        ?
82                    )
83                ;
84                builder = builder.set_transitions(var_6);
85            }
86            ,
87            s if s.matches("NoncurrentVersionTransition") /* NoncurrentVersionTransitions com.amazonaws.s3#LifecycleRule$NoncurrentVersionTransitions */ =>  {
88                let var_8 =
89                    Some(
90                        Result::<::std::vec::Vec::<crate::types::NoncurrentVersionTransition>, ::aws_smithy_xml::decode::XmlDecodeError>::Ok({
91                            let mut list_9 = builder.noncurrent_version_transitions.take().unwrap_or_default();
92                            list_9.push(
93                                crate::protocol_serde::shape_noncurrent_version_transition::de_noncurrent_version_transition(&mut tag)
94                                ?
95                            );
96                            list_9
97                        })
98                        ?
99                    )
100                ;
101                builder = builder.set_noncurrent_version_transitions(var_8);
102            }
103            ,
104            s if s.matches("NoncurrentVersionExpiration") /* NoncurrentVersionExpiration com.amazonaws.s3#LifecycleRule$NoncurrentVersionExpiration */ =>  {
105                let var_10 =
106                    Some(
107                        crate::protocol_serde::shape_noncurrent_version_expiration::de_noncurrent_version_expiration(&mut tag)
108                        ?
109                    )
110                ;
111                builder = builder.set_noncurrent_version_expiration(var_10);
112            }
113            ,
114            s if s.matches("AbortIncompleteMultipartUpload") /* AbortIncompleteMultipartUpload com.amazonaws.s3#LifecycleRule$AbortIncompleteMultipartUpload */ =>  {
115                let var_11 =
116                    Some(
117                        crate::protocol_serde::shape_abort_incomplete_multipart_upload::de_abort_incomplete_multipart_upload(&mut tag)
118                        ?
119                    )
120                ;
121                builder = builder.set_abort_incomplete_multipart_upload(var_11);
122            }
123            ,
124            _ => {}
125        }
126    }
127    Ok(crate::serde_util::lifecycle_rule_correct_errors(builder)
128        .build()
129        .map_err(|_| ::aws_smithy_xml::decode::XmlDecodeError::custom("missing field"))?)
130}
131
132pub fn ser_lifecycle_rule(
133    input: &crate::types::LifecycleRule,
134    writer: ::aws_smithy_xml::encode::ElWriter,
135) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
136    #[allow(unused_mut)]
137    let mut scope = writer.finish();
138    if let Some(var_12) = &input.expiration {
139        let inner_writer = scope.start_el("Expiration");
140        crate::protocol_serde::shape_lifecycle_expiration::ser_lifecycle_expiration(var_12, inner_writer)?
141    }
142    if let Some(var_13) = &input.id {
143        let mut inner_writer = scope.start_el("ID").finish();
144        inner_writer.data(var_13.as_str());
145    }
146    if let Some(var_14) = &input.prefix {
147        let mut inner_writer = scope.start_el("Prefix").finish();
148        inner_writer.data(var_14.as_str());
149    }
150    if let Some(var_15) = &input.filter {
151        let inner_writer = scope.start_el("Filter");
152        crate::protocol_serde::shape_lifecycle_rule_filter::ser_lifecycle_rule_filter(var_15, inner_writer)?
153    }
154    {
155        let mut inner_writer = scope.start_el("Status").finish();
156        inner_writer.data(input.status.as_str());
157    }
158    if let Some(var_16) = &input.transitions {
159        for list_item_17 in var_16 {
160            {
161                let inner_writer = scope.start_el("Transition");
162                crate::protocol_serde::shape_transition::ser_transition(list_item_17, inner_writer)?
163            }
164        }
165    }
166    if let Some(var_18) = &input.noncurrent_version_transitions {
167        for list_item_19 in var_18 {
168            {
169                let inner_writer = scope.start_el("NoncurrentVersionTransition");
170                crate::protocol_serde::shape_noncurrent_version_transition::ser_noncurrent_version_transition(list_item_19, inner_writer)?
171            }
172        }
173    }
174    if let Some(var_20) = &input.noncurrent_version_expiration {
175        let inner_writer = scope.start_el("NoncurrentVersionExpiration");
176        crate::protocol_serde::shape_noncurrent_version_expiration::ser_noncurrent_version_expiration(var_20, inner_writer)?
177    }
178    if let Some(var_21) = &input.abort_incomplete_multipart_upload {
179        let inner_writer = scope.start_el("AbortIncompleteMultipartUpload");
180        crate::protocol_serde::shape_abort_incomplete_multipart_upload::ser_abort_incomplete_multipart_upload(var_21, inner_writer)?
181    }
182    scope.finish();
183    Ok(())
184}