aws_sdk_ecs/protocol_serde/
shape_instance_launch_template.rs1pub fn ser_instance_launch_template(
3 object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
4 input: &crate::types::InstanceLaunchTemplate,
5) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
6 {
7 object.key("ec2InstanceProfileArn").string(input.ec2_instance_profile_arn.as_str());
8 }
9 if let Some(var_1) = &input.network_configuration {
10 #[allow(unused_mut)]
11 let mut object_2 = object.key("networkConfiguration").start_object();
12 crate::protocol_serde::shape_managed_instances_network_configuration::ser_managed_instances_network_configuration(&mut object_2, var_1)?;
13 object_2.finish();
14 }
15 if let Some(var_3) = &input.storage_configuration {
16 #[allow(unused_mut)]
17 let mut object_4 = object.key("storageConfiguration").start_object();
18 crate::protocol_serde::shape_managed_instances_storage_configuration::ser_managed_instances_storage_configuration(&mut object_4, var_3)?;
19 object_4.finish();
20 }
21 if let Some(var_5) = &input.monitoring {
22 object.key("monitoring").string(var_5.as_str());
23 }
24 if let Some(var_6) = &input.instance_requirements {
25 #[allow(unused_mut)]
26 let mut object_7 = object.key("instanceRequirements").start_object();
27 crate::protocol_serde::shape_instance_requirements_request::ser_instance_requirements_request(&mut object_7, var_6)?;
28 object_7.finish();
29 }
30 Ok(())
31}
32
33pub(crate) fn de_instance_launch_template<'a, I>(
34 tokens: &mut ::std::iter::Peekable<I>,
35) -> ::std::result::Result<Option<crate::types::InstanceLaunchTemplate>, ::aws_smithy_json::deserialize::error::DeserializeError>
36where
37 I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
38{
39 match tokens.next().transpose()? {
40 Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
41 Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
42 #[allow(unused_mut)]
43 let mut builder = crate::types::builders::InstanceLaunchTemplateBuilder::default();
44 loop {
45 match tokens.next().transpose()? {
46 Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
47 Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
48 "ec2InstanceProfileArn" => {
49 builder = builder.set_ec2_instance_profile_arn(
50 ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
51 .map(|s| s.to_unescaped().map(|u| u.into_owned()))
52 .transpose()?,
53 );
54 }
55 "networkConfiguration" => {
56 builder = builder.set_network_configuration(
57 crate::protocol_serde::shape_managed_instances_network_configuration::de_managed_instances_network_configuration(
58 tokens,
59 )?,
60 );
61 }
62 "storageConfiguration" => {
63 builder = builder.set_storage_configuration(
64 crate::protocol_serde::shape_managed_instances_storage_configuration::de_managed_instances_storage_configuration(
65 tokens,
66 )?,
67 );
68 }
69 "monitoring" => {
70 builder = builder.set_monitoring(
71 ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
72 .map(|s| {
73 s.to_unescaped()
74 .map(|u| crate::types::ManagedInstancesMonitoringOptions::from(u.as_ref()))
75 })
76 .transpose()?,
77 );
78 }
79 "instanceRequirements" => {
80 builder = builder.set_instance_requirements(
81 crate::protocol_serde::shape_instance_requirements_request::de_instance_requirements_request(tokens)?,
82 );
83 }
84 _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
85 },
86 other => {
87 return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
88 "expected object key or end object, found: {:?}",
89 other
90 )))
91 }
92 }
93 }
94 Ok(Some(
95 crate::serde_util::instance_launch_template_correct_errors(builder)
96 .build()
97 .map_err(|err| ::aws_smithy_json::deserialize::error::DeserializeError::custom_source("Response was invalid", err))?,
98 ))
99 }
100 _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
101 "expected start object or null",
102 )),
103 }
104}