aws_sdk_mediapackagev2/protocol_serde/
shape_segment.rs1pub(crate) fn de_segment<'a, I>(
3 tokens: &mut ::std::iter::Peekable<I>,
4) -> ::std::result::Result<Option<crate::types::Segment>, ::aws_smithy_json::deserialize::error::DeserializeError>
5where
6 I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
7{
8 match tokens.next().transpose()? {
9 Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
10 Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
11 #[allow(unused_mut)]
12 let mut builder = crate::types::builders::SegmentBuilder::default();
13 loop {
14 match tokens.next().transpose()? {
15 Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
16 Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
17 "SegmentDurationSeconds" => {
18 builder = builder.set_segment_duration_seconds(
19 ::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?
20 .map(i32::try_from)
21 .transpose()?,
22 );
23 }
24 "SegmentName" => {
25 builder = builder.set_segment_name(
26 ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
27 .map(|s| s.to_unescaped().map(|u| u.into_owned()))
28 .transpose()?,
29 );
30 }
31 "TsUseAudioRenditionGroup" => {
32 builder =
33 builder.set_ts_use_audio_rendition_group(::aws_smithy_json::deserialize::token::expect_bool_or_null(tokens.next())?);
34 }
35 "IncludeIframeOnlyStreams" => {
36 builder =
37 builder.set_include_iframe_only_streams(::aws_smithy_json::deserialize::token::expect_bool_or_null(tokens.next())?);
38 }
39 "TsIncludeDvbSubtitles" => {
40 builder =
41 builder.set_ts_include_dvb_subtitles(::aws_smithy_json::deserialize::token::expect_bool_or_null(tokens.next())?);
42 }
43 "Scte" => {
44 builder = builder.set_scte(crate::protocol_serde::shape_scte::de_scte(tokens)?);
45 }
46 "Encryption" => {
47 builder = builder.set_encryption(crate::protocol_serde::shape_encryption::de_encryption(tokens)?);
48 }
49 _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
50 },
51 other => {
52 return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
53 "expected object key or end object, found: {:?}",
54 other
55 )))
56 }
57 }
58 }
59 Ok(Some(builder.build()))
60 }
61 _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
62 "expected start object or null",
63 )),
64 }
65}
66
67pub fn ser_segment(
68 object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
69 input: &crate::types::Segment,
70) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
71 if let Some(var_1) = &input.segment_duration_seconds {
72 object.key("SegmentDurationSeconds").number(
73 #[allow(clippy::useless_conversion)]
74 ::aws_smithy_types::Number::NegInt((*var_1).into()),
75 );
76 }
77 if let Some(var_2) = &input.segment_name {
78 object.key("SegmentName").string(var_2.as_str());
79 }
80 if let Some(var_3) = &input.ts_use_audio_rendition_group {
81 object.key("TsUseAudioRenditionGroup").boolean(*var_3);
82 }
83 if let Some(var_4) = &input.include_iframe_only_streams {
84 object.key("IncludeIframeOnlyStreams").boolean(*var_4);
85 }
86 if let Some(var_5) = &input.ts_include_dvb_subtitles {
87 object.key("TsIncludeDvbSubtitles").boolean(*var_5);
88 }
89 if let Some(var_6) = &input.scte {
90 #[allow(unused_mut)]
91 let mut object_7 = object.key("Scte").start_object();
92 crate::protocol_serde::shape_scte::ser_scte(&mut object_7, var_6)?;
93 object_7.finish();
94 }
95 if let Some(var_8) = &input.encryption {
96 #[allow(unused_mut)]
97 let mut object_9 = object.key("Encryption").start_object();
98 crate::protocol_serde::shape_encryption::ser_encryption(&mut object_9, var_8)?;
99 object_9.finish();
100 }
101 Ok(())
102}