aws_sdk_dlm/protocol_serde/
shape_schedule.rs1pub fn ser_schedule(
3 object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
4 input: &crate::types::Schedule,
5) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
6 if let Some(var_1) = &input.name {
7 object.key("Name").string(var_1.as_str());
8 }
9 if let Some(var_2) = &input.copy_tags {
10 object.key("CopyTags").boolean(*var_2);
11 }
12 if let Some(var_3) = &input.tags_to_add {
13 let mut array_4 = object.key("TagsToAdd").start_array();
14 for item_5 in var_3 {
15 {
16 #[allow(unused_mut)]
17 let mut object_6 = array_4.value().start_object();
18 crate::protocol_serde::shape_tag::ser_tag(&mut object_6, item_5)?;
19 object_6.finish();
20 }
21 }
22 array_4.finish();
23 }
24 if let Some(var_7) = &input.variable_tags {
25 let mut array_8 = object.key("VariableTags").start_array();
26 for item_9 in var_7 {
27 {
28 #[allow(unused_mut)]
29 let mut object_10 = array_8.value().start_object();
30 crate::protocol_serde::shape_tag::ser_tag(&mut object_10, item_9)?;
31 object_10.finish();
32 }
33 }
34 array_8.finish();
35 }
36 if let Some(var_11) = &input.create_rule {
37 #[allow(unused_mut)]
38 let mut object_12 = object.key("CreateRule").start_object();
39 crate::protocol_serde::shape_create_rule::ser_create_rule(&mut object_12, var_11)?;
40 object_12.finish();
41 }
42 if let Some(var_13) = &input.retain_rule {
43 #[allow(unused_mut)]
44 let mut object_14 = object.key("RetainRule").start_object();
45 crate::protocol_serde::shape_retain_rule::ser_retain_rule(&mut object_14, var_13)?;
46 object_14.finish();
47 }
48 if let Some(var_15) = &input.fast_restore_rule {
49 #[allow(unused_mut)]
50 let mut object_16 = object.key("FastRestoreRule").start_object();
51 crate::protocol_serde::shape_fast_restore_rule::ser_fast_restore_rule(&mut object_16, var_15)?;
52 object_16.finish();
53 }
54 if let Some(var_17) = &input.cross_region_copy_rules {
55 let mut array_18 = object.key("CrossRegionCopyRules").start_array();
56 for item_19 in var_17 {
57 {
58 #[allow(unused_mut)]
59 let mut object_20 = array_18.value().start_object();
60 crate::protocol_serde::shape_cross_region_copy_rule::ser_cross_region_copy_rule(&mut object_20, item_19)?;
61 object_20.finish();
62 }
63 }
64 array_18.finish();
65 }
66 if let Some(var_21) = &input.share_rules {
67 let mut array_22 = object.key("ShareRules").start_array();
68 for item_23 in var_21 {
69 {
70 #[allow(unused_mut)]
71 let mut object_24 = array_22.value().start_object();
72 crate::protocol_serde::shape_share_rule::ser_share_rule(&mut object_24, item_23)?;
73 object_24.finish();
74 }
75 }
76 array_22.finish();
77 }
78 if let Some(var_25) = &input.deprecate_rule {
79 #[allow(unused_mut)]
80 let mut object_26 = object.key("DeprecateRule").start_object();
81 crate::protocol_serde::shape_deprecate_rule::ser_deprecate_rule(&mut object_26, var_25)?;
82 object_26.finish();
83 }
84 if let Some(var_27) = &input.archive_rule {
85 #[allow(unused_mut)]
86 let mut object_28 = object.key("ArchiveRule").start_object();
87 crate::protocol_serde::shape_archive_rule::ser_archive_rule(&mut object_28, var_27)?;
88 object_28.finish();
89 }
90 Ok(())
91}
92
93pub(crate) fn de_schedule<'a, I>(
94 tokens: &mut ::std::iter::Peekable<I>,
95) -> ::std::result::Result<Option<crate::types::Schedule>, ::aws_smithy_json::deserialize::error::DeserializeError>
96where
97 I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
98{
99 match tokens.next().transpose()? {
100 Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
101 Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
102 #[allow(unused_mut)]
103 let mut builder = crate::types::builders::ScheduleBuilder::default();
104 loop {
105 match tokens.next().transpose()? {
106 Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
107 Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
108 "Name" => {
109 builder = builder.set_name(
110 ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
111 .map(|s| s.to_unescaped().map(|u| u.into_owned()))
112 .transpose()?,
113 );
114 }
115 "CopyTags" => {
116 builder = builder.set_copy_tags(::aws_smithy_json::deserialize::token::expect_bool_or_null(tokens.next())?);
117 }
118 "TagsToAdd" => {
119 builder = builder.set_tags_to_add(crate::protocol_serde::shape_tags_to_add_list::de_tags_to_add_list(tokens)?);
120 }
121 "VariableTags" => {
122 builder = builder.set_variable_tags(crate::protocol_serde::shape_variable_tags_list::de_variable_tags_list(tokens)?);
123 }
124 "CreateRule" => {
125 builder = builder.set_create_rule(crate::protocol_serde::shape_create_rule::de_create_rule(tokens)?);
126 }
127 "RetainRule" => {
128 builder = builder.set_retain_rule(crate::protocol_serde::shape_retain_rule::de_retain_rule(tokens)?);
129 }
130 "FastRestoreRule" => {
131 builder = builder.set_fast_restore_rule(crate::protocol_serde::shape_fast_restore_rule::de_fast_restore_rule(tokens)?);
132 }
133 "CrossRegionCopyRules" => {
134 builder = builder.set_cross_region_copy_rules(
135 crate::protocol_serde::shape_cross_region_copy_rules::de_cross_region_copy_rules(tokens)?,
136 );
137 }
138 "ShareRules" => {
139 builder = builder.set_share_rules(crate::protocol_serde::shape_share_rules::de_share_rules(tokens)?);
140 }
141 "DeprecateRule" => {
142 builder = builder.set_deprecate_rule(crate::protocol_serde::shape_deprecate_rule::de_deprecate_rule(tokens)?);
143 }
144 "ArchiveRule" => {
145 builder = builder.set_archive_rule(crate::protocol_serde::shape_archive_rule::de_archive_rule(tokens)?);
146 }
147 _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
148 },
149 other => {
150 return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
151 "expected object key or end object, found: {:?}",
152 other
153 )))
154 }
155 }
156 }
157 Ok(Some(builder.build()))
158 }
159 _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
160 "expected start object or null",
161 )),
162 }
163}