signald_rust/
signaldrequest.rs

1use serde::Serialize;
2
3/// A Signald request
4/// Contains of all the possible fields necessary by signald
5#[derive(Serialize, Default, Clone)]
6pub struct SignaldRequest {
7    #[serde(rename = "type")]
8    pub typ: String,
9    pub username: String,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub id: Option<String>,
12    #[serde(rename = "messageBody", skip_serializing_if = "Option::is_none")]
13    pub message_body: Option<String>,
14    #[serde(rename = "recipientNumber", skip_serializing_if = "Option::is_none")]
15    pub recipient_number: Option<String>,
16    #[serde(rename = "recipientGroupId",skip_serializing_if = "Option::is_none")]
17    pub recipient_group_id: Option<String>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub voice: Option<bool>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub code: Option<String>,
22    #[serde(rename = "deviceName", skip_serializing_if = "Option::is_none")]
23    pub device_name: Option<String>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub attachment_filenames: Option<Vec<String>>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub quote: Option<String>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub uri: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub group_name: Option<String>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub members: Option<Vec<String>>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub avatar: Option<String>,
36}
37impl SignaldRequest {
38    /// Parse a request to json
39    pub fn to_json_string(&self) -> String {
40        serde_json::to_string(self).unwrap()
41    }
42}
43
44pub struct SignaldRequestBuilder {
45    request: SignaldRequest
46}
47impl SignaldRequestBuilder {
48    pub fn new() -> SignaldRequestBuilder {
49        SignaldRequestBuilder {
50            request: Default::default(),
51        }
52    }
53
54    pub fn set_type(&mut self, typ: String) {
55        self.request.typ = typ;
56    }
57
58    pub fn set_username(&mut self, username: String) {
59        self.request.username = username;
60    }
61
62    pub fn set_recipient_number(&mut self, recipient_number: String) {
63        self.request.recipient_number = Some(recipient_number);
64    }
65
66    pub fn set_message_body(&mut self, message_body: String) {
67        self.request.message_body = Some(message_body);
68    }
69
70    pub fn set_id(&mut self, id: String) {
71        self.request.id = Some(id);
72    }
73
74    /// Create a request
75    /// Returns a clone of the internal request
76    pub fn build(&self) -> SignaldRequest {
77        self.request.clone()
78    }
79}