four 0.0.13

framework for creating AWS CloudFormation template
Documentation
use nutype::nutype;
use serde::Serialize;

use crate::AccountDetail;

#[derive(Debug, Clone)]
pub struct GetLayerVersionAction;

impl Serialize for GetLayerVersionAction {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: serde::Serializer,
    {
        serializer.serialize_str("lambda:GetLayerVersion")
    }
}

#[nutype(
    validate(len_char_max = 34, regex = r#"o-[a-z0-9]{10,32}"#),
    derive(Debug, Clone, Serialize)
)]
pub struct OrganizationId(String);

#[derive(Debug, Clone)]
pub enum LayerVersionPrincipal {
    Account(AccountDetail),
    Any,
}

impl Serialize for LayerVersionPrincipal {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: serde::Serializer,
    {
        match self {
            LayerVersionPrincipal::Account(x) => x.serialize(serializer),
            LayerVersionPrincipal::Any => "*".serialize(serializer),
        }
    }
}