push_messaging/client/
message.rs

1use std::{error::Error, fmt, rc::Rc, str::FromStr};
2
3use builder_pattern::Builder;
4use chrono::{DateTime, Duration, FixedOffset};
5use serde::{Deserialize, Deserializer, Serialize, Serializer};
6use serde_json::Value;
7use serde_with::skip_serializing_none;
8
9use super::notification::Notification;
10
11#[skip_serializing_none]
12#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Builder)]
13pub struct Message {
14    #[into]
15    #[default(None)]
16    pub data: Option<Value>,
17    #[into]
18    #[default(None)]
19    pub notification: Option<Notification>,
20    #[into]
21    #[default(None)]
22    pub meta: Option<Meta>,
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Builder)]
26pub struct Meta{
27    #[into]
28    #[default(None)]
29    pub collapser_key: Option<String>,
30    #[into]
31    #[default(None)]
32    pub content_available: Option<bool>,
33
34    #[into]
35    #[default(None)]
36    pub delay_while_idle: Option<bool>,
37    #[into]
38    #[default(None)]
39    pub dry_run: Option<bool>,
40
41    #[into]
42    #[default(None)]
43    pub priority: Option<Priority>,
44    #[into]
45    #[default(None)]
46    pub restricted_package_name: Option<String>,
47    #[into]
48    #[default(None)]
49    pub time_to_live: Option<u32>,
50
51    #[into]
52    #[default(None)]
53    pub mutable_content: Option<bool>,
54}
55
56#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
57pub enum Priority {
58    High,
59    Normal,
60}