push_messaging/client/
message.rs1use 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}