push-messaging 0.1.1

Push Messaging package
Documentation
use std::{error::Error, fmt, rc::Rc, str::FromStr};

use builder_pattern::Builder;
use chrono::{DateTime, Duration, FixedOffset};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use serde_json::Value;
use serde_with::skip_serializing_none;

use super::notification::Notification;

#[skip_serializing_none]
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Builder)]
pub struct Message {
    #[into]
    #[default(None)]
    pub data: Option<Value>,
    #[into]
    #[default(None)]
    pub notification: Option<Notification>,
    #[into]
    #[default(None)]
    pub meta: Option<Meta>,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Builder)]
pub struct Meta{
    #[into]
    #[default(None)]
    pub collapser_key: Option<String>,
    #[into]
    #[default(None)]
    pub content_available: Option<bool>,

    #[into]
    #[default(None)]
    pub delay_while_idle: Option<bool>,
    #[into]
    #[default(None)]
    pub dry_run: Option<bool>,

    #[into]
    #[default(None)]
    pub priority: Option<Priority>,
    #[into]
    #[default(None)]
    pub restricted_package_name: Option<String>,
    #[into]
    #[default(None)]
    pub time_to_live: Option<u32>,

    #[into]
    #[default(None)]
    pub mutable_content: Option<bool>,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum Priority {
    High,
    Normal,
}