aws_sdk_s3/protocol_serde/
shape_replication_rule.rs
1pub fn ser_replication_rule(
3 input: &crate::types::ReplicationRule,
4 writer: ::aws_smithy_xml::encode::ElWriter,
5) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
6 #[allow(unused_mut)]
7 let mut scope = writer.finish();
8 if let Some(var_1) = &input.id {
9 let mut inner_writer = scope.start_el("ID").finish();
10 inner_writer.data(var_1.as_str());
11 }
12 if let Some(var_2) = &input.priority {
13 let mut inner_writer = scope.start_el("Priority").finish();
14 inner_writer.data(::aws_smithy_types::primitive::Encoder::from(*var_2).encode());
15 }
16 if let Some(var_3) = &input.prefix {
17 let mut inner_writer = scope.start_el("Prefix").finish();
18 inner_writer.data(var_3.as_str());
19 }
20 if let Some(var_4) = &input.filter {
21 let inner_writer = scope.start_el("Filter");
22 crate::protocol_serde::shape_replication_rule_filter::ser_replication_rule_filter(var_4, inner_writer)?
23 }
24 {
25 let mut inner_writer = scope.start_el("Status").finish();
26 inner_writer.data(input.status.as_str());
27 }
28 if let Some(var_5) = &input.source_selection_criteria {
29 let inner_writer = scope.start_el("SourceSelectionCriteria");
30 crate::protocol_serde::shape_source_selection_criteria::ser_source_selection_criteria(var_5, inner_writer)?
31 }
32 if let Some(var_6) = &input.existing_object_replication {
33 let inner_writer = scope.start_el("ExistingObjectReplication");
34 crate::protocol_serde::shape_existing_object_replication::ser_existing_object_replication(var_6, inner_writer)?
35 }
36 if let Some(var_7) = &input.destination {
37 let inner_writer = scope.start_el("Destination");
38 crate::protocol_serde::shape_destination::ser_destination(var_7, inner_writer)?
39 }
40 if let Some(var_8) = &input.delete_marker_replication {
41 let inner_writer = scope.start_el("DeleteMarkerReplication");
42 crate::protocol_serde::shape_delete_marker_replication::ser_delete_marker_replication(var_8, inner_writer)?
43 }
44 scope.finish();
45 Ok(())
46}
47
48#[allow(clippy::needless_question_mark)]
49pub fn de_replication_rule(
50 decoder: &mut ::aws_smithy_xml::decode::ScopedDecoder,
51) -> ::std::result::Result<crate::types::ReplicationRule, ::aws_smithy_xml::decode::XmlDecodeError> {
52 #[allow(unused_mut)]
53 let mut builder = crate::types::ReplicationRule::builder();
54 while let Some(mut tag) = decoder.next_tag() {
55 match tag.start_el() {
56 s if s.matches("ID") => {
57 let var_9 =
58 Some(
59 Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
60 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
61 .into()
62 )
63 ?
64 )
65 ;
66 builder = builder.set_id(var_9);
67 }
68 ,
69 s if s.matches("Priority") => {
70 let var_10 =
71 Some(
72 {
73 <i32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
74 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
75 )
76 .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (integer: `com.amazonaws.s3#Priority`)"))
77 }
78 ?
79 )
80 ;
81 builder = builder.set_priority(var_10);
82 }
83 ,
84 s if s.matches("Prefix") => {
85 let var_11 =
86 Some(
87 Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
88 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
89 .into()
90 )
91 ?
92 )
93 ;
94 builder = builder.set_prefix(var_11);
95 }
96 ,
97 s if s.matches("Filter") => {
98 let var_12 =
99 Some(
100 crate::protocol_serde::shape_replication_rule_filter::de_replication_rule_filter(&mut tag)
101 ?
102 )
103 ;
104 builder = builder.set_filter(var_12);
105 }
106 ,
107 s if s.matches("Status") => {
108 let var_13 =
109 Some(
110 Result::<crate::types::ReplicationRuleStatus, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
111 crate::types::ReplicationRuleStatus::from(
112 ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
113 )
114 )
115 ?
116 )
117 ;
118 builder = builder.set_status(var_13);
119 }
120 ,
121 s if s.matches("SourceSelectionCriteria") => {
122 let var_14 =
123 Some(
124 crate::protocol_serde::shape_source_selection_criteria::de_source_selection_criteria(&mut tag)
125 ?
126 )
127 ;
128 builder = builder.set_source_selection_criteria(var_14);
129 }
130 ,
131 s if s.matches("ExistingObjectReplication") => {
132 let var_15 =
133 Some(
134 crate::protocol_serde::shape_existing_object_replication::de_existing_object_replication(&mut tag)
135 ?
136 )
137 ;
138 builder = builder.set_existing_object_replication(var_15);
139 }
140 ,
141 s if s.matches("Destination") => {
142 let var_16 =
143 Some(
144 crate::protocol_serde::shape_destination::de_destination(&mut tag)
145 ?
146 )
147 ;
148 builder = builder.set_destination(var_16);
149 }
150 ,
151 s if s.matches("DeleteMarkerReplication") => {
152 let var_17 =
153 Some(
154 crate::protocol_serde::shape_delete_marker_replication::de_delete_marker_replication(&mut tag)
155 ?
156 )
157 ;
158 builder = builder.set_delete_marker_replication(var_17);
159 }
160 ,
161 _ => {}
162 }
163 }
164 Ok(crate::serde_util::replication_rule_correct_errors(builder)
165 .build()
166 .map_err(|_| ::aws_smithy_xml::decode::XmlDecodeError::custom("missing field"))?)
167}