termii_rust/common/switch/
messaging.rs1use serde::{Deserialize, Deserializer, Serialize};
2
3#[derive(Debug, Deserialize, Serialize)]
4pub struct MessageResponse {
5 #[serde(deserialize_with = "from_usize")]
6 pub message_id: String,
7 pub message: String,
8 pub balance: f64,
9 pub user: String,
10 pub code: Option<String>,
11}
12
13fn from_usize<'de, D>(deserializer: D) -> Result<String, D::Error>
14where
15 D: Deserializer<'de>,
16{
17 let s: usize = Deserialize::deserialize(deserializer)?;
18 Ok(s.to_string())
19}
20
21#[derive(Serialize, Deserialize, Debug)]
22pub struct MessageRequest {
23 pub to: String,
24 pub from: String,
25 pub sms: String,
26 #[serde(rename = "type")]
27 pub message_type: MessageType,
28 pub channel: Channel,
29 pub media: Option<Media>,
30 api_key: Option<String>,
31}
32
33impl MessageRequest {
34 pub fn new(
35 to: String,
36 from: String,
37 sms: String,
38 message_type: MessageType,
39 channel: Channel,
40 ) -> MessageRequest {
41 MessageRequest {
42 to,
43 from,
44 sms,
45 message_type,
46 channel,
47 media: None,
48 api_key: None,
49 }
50 }
51
52 pub(crate) fn set_api_key(&mut self, api_key: &str) {
53 self.api_key = Some(api_key.to_string());
54 }
55}
56
57#[derive(Serialize, Deserialize, Debug)]
58pub struct MessageBulkRequest {
59 pub to: Vec<String>,
60 pub from: String,
61 pub sms: String,
62 #[serde(rename = "type")]
63 pub message_type: MessageType,
64 pub channel: Channel,
65 api_key: Option<String>,
66}
67
68impl MessageBulkRequest {
69 pub fn new(
70 to: Vec<String>,
71 from: String,
72 sms: String,
73 message_type: MessageType,
74 channel: Channel,
75 ) -> MessageBulkRequest {
76 MessageBulkRequest {
77 to,
78 from,
79 sms,
80 message_type,
81 channel,
82 api_key: None,
83 }
84 }
85
86 pub(crate) fn set_api_key(&mut self, api_key: &str) {
87 self.api_key = Some(api_key.to_string());
88 }
89}
90
91#[derive(Serialize, Deserialize, Debug)]
92pub struct MessageBulkResponse {
93 pub code: String,
94 pub message_id: String,
95 pub message: String,
96 pub balance: f64,
97 pub user: String,
98}
99
100#[derive(Serialize, Deserialize, Debug)]
101pub struct Media {
102 pub url: String,
103 pub caption: String,
104}
105
106#[derive(Serialize, Deserialize, Debug)]
107pub enum MessageType {
108 #[serde(rename = "plain")]
109 Plain,
110}
111
112#[derive(Serialize, Deserialize, Debug)]
113pub enum Channel {
114 #[serde(rename = "generic")]
115 Generic,
116 #[serde(rename = "dnd")]
117 Dnd,
118 #[serde(rename = "whatsapp")]
119 Whatsapp,
120}