passkit 0.0.1

Apple PassKit library to manage passes
use serde_derive::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Personalization {
    pub required_personalization_fields: Vec<PersonalizationField>,

    pub description: String,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub terms_and_conditions: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum PersonalizationField {
    #[serde(rename = "PKPassPersonalizationFieldName")]
    Name,

    #[serde(rename = "PKPassPersonalizationFieldPostalCode")]
    PostalCode,

    #[serde(rename = "PKPassPersonalizationFieldEmailAddress")]
    EmailAddress,

    #[serde(rename = "PKPassPersonalizationFieldPhoneNumber")]
    PhoneNumber,
}

mod test {

    #[test]
    fn example() {
        use super::*;
        let pers = Personalization {
            required_personalization_fields: vec![
                PersonalizationField::Name,
                PersonalizationField::PhoneNumber,
                PersonalizationField::PostalCode,
            ],
            description: "Enter your information to sign up and earn points.".to_string(),
            terms_and_conditions: Some("Terms".into()),
        };

        let json = serde_json::to_string_pretty(&pers).unwrap();

        println!("{}", json);
        println!("{:#?}", pers);
    }
}