aws-sdk-pinpoint 0.28.0

AWS SDK for Amazon Pinpoint
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub fn ser_open_hours(
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
    input: &crate::types::OpenHours,
) -> Result<(), ::aws_smithy_http::operation::error::SerializationError> {
    if let Some(var_1) = &input.email {
        #[allow(unused_mut)]
        let mut object_2 = object.key("EMAIL").start_object();
        for (key_3, value_4) in var_1 {
            {
                let mut array_5 = object_2.key(key_3.as_str()).start_array();
                for item_6 in value_4 {
                    {
                        #[allow(unused_mut)]
                        let mut object_7 = array_5.value().start_object();
                        crate::protocol_serde::shape_open_hours_rule::ser_open_hours_rule(
                            &mut object_7,
                            item_6,
                        )?;
                        object_7.finish();
                    }
                }
                array_5.finish();
            }
        }
        object_2.finish();
    }
    if let Some(var_8) = &input.sms {
        #[allow(unused_mut)]
        let mut object_9 = object.key("SMS").start_object();
        for (key_10, value_11) in var_8 {
            {
                let mut array_12 = object_9.key(key_10.as_str()).start_array();
                for item_13 in value_11 {
                    {
                        #[allow(unused_mut)]
                        let mut object_14 = array_12.value().start_object();
                        crate::protocol_serde::shape_open_hours_rule::ser_open_hours_rule(
                            &mut object_14,
                            item_13,
                        )?;
                        object_14.finish();
                    }
                }
                array_12.finish();
            }
        }
        object_9.finish();
    }
    if let Some(var_15) = &input.push {
        #[allow(unused_mut)]
        let mut object_16 = object.key("PUSH").start_object();
        for (key_17, value_18) in var_15 {
            {
                let mut array_19 = object_16.key(key_17.as_str()).start_array();
                for item_20 in value_18 {
                    {
                        #[allow(unused_mut)]
                        let mut object_21 = array_19.value().start_object();
                        crate::protocol_serde::shape_open_hours_rule::ser_open_hours_rule(
                            &mut object_21,
                            item_20,
                        )?;
                        object_21.finish();
                    }
                }
                array_19.finish();
            }
        }
        object_16.finish();
    }
    if let Some(var_22) = &input.voice {
        #[allow(unused_mut)]
        let mut object_23 = object.key("VOICE").start_object();
        for (key_24, value_25) in var_22 {
            {
                let mut array_26 = object_23.key(key_24.as_str()).start_array();
                for item_27 in value_25 {
                    {
                        #[allow(unused_mut)]
                        let mut object_28 = array_26.value().start_object();
                        crate::protocol_serde::shape_open_hours_rule::ser_open_hours_rule(
                            &mut object_28,
                            item_27,
                        )?;
                        object_28.finish();
                    }
                }
                array_26.finish();
            }
        }
        object_23.finish();
    }
    if let Some(var_29) = &input.custom {
        #[allow(unused_mut)]
        let mut object_30 = object.key("CUSTOM").start_object();
        for (key_31, value_32) in var_29 {
            {
                let mut array_33 = object_30.key(key_31.as_str()).start_array();
                for item_34 in value_32 {
                    {
                        #[allow(unused_mut)]
                        let mut object_35 = array_33.value().start_object();
                        crate::protocol_serde::shape_open_hours_rule::ser_open_hours_rule(
                            &mut object_35,
                            item_34,
                        )?;
                        object_35.finish();
                    }
                }
                array_33.finish();
            }
        }
        object_30.finish();
    }
    Ok(())
}

pub(crate) fn de_open_hours<'a, I>(
    tokens: &mut ::std::iter::Peekable<I>,
) -> Result<Option<crate::types::OpenHours>, ::aws_smithy_json::deserialize::error::DeserializeError>
where
    I: Iterator<
        Item = Result<
            ::aws_smithy_json::deserialize::Token<'a>,
            ::aws_smithy_json::deserialize::error::DeserializeError,
        >,
    >,
{
    match tokens.next().transpose()? {
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
            #[allow(unused_mut)]
            let mut builder = crate::types::builders::OpenHoursBuilder::default();
            loop {
                match tokens.next().transpose()? {
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => {
                        match key.to_unescaped()?.as_ref() {
                            "EMAIL" => {
                                builder = builder.set_email(
                                    crate::protocol_serde::shape_map_of_list_of_open_hours_rules::de_map_of_list_of_open_hours_rules(tokens)?
                                );
                            }
                            "SMS" => {
                                builder = builder.set_sms(
                                    crate::protocol_serde::shape_map_of_list_of_open_hours_rules::de_map_of_list_of_open_hours_rules(tokens)?
                                );
                            }
                            "PUSH" => {
                                builder = builder.set_push(
                                    crate::protocol_serde::shape_map_of_list_of_open_hours_rules::de_map_of_list_of_open_hours_rules(tokens)?
                                );
                            }
                            "VOICE" => {
                                builder = builder.set_voice(
                                    crate::protocol_serde::shape_map_of_list_of_open_hours_rules::de_map_of_list_of_open_hours_rules(tokens)?
                                );
                            }
                            "CUSTOM" => {
                                builder = builder.set_custom(
                                    crate::protocol_serde::shape_map_of_list_of_open_hours_rules::de_map_of_list_of_open_hours_rules(tokens)?
                                );
                            }
                            _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
                        }
                    }
                    other => {
                        return Err(
                            ::aws_smithy_json::deserialize::error::DeserializeError::custom(
                                format!("expected object key or end object, found: {:?}", other),
                            ),
                        )
                    }
                }
            }
            Ok(Some(builder.build()))
        }
        _ => Err(
            ::aws_smithy_json::deserialize::error::DeserializeError::custom(
                "expected start object or null",
            ),
        ),
    }
}