1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//! Send messages to customers across termii channels.
use std::rc::Rc;
use crate::{
blocking::http::client,
common::{
errors,
switch::messaging::{
MessageBulkRequest, MessageBulkResponse, MessageRequest, MessageResponse,
},
},
};
#[derive(Debug)]
pub struct Messaging<'a> {
api_key: &'a str,
client: Rc<client::HttpClient>,
}
impl<'a> Messaging<'a> {
pub(crate) fn new(api_key: &'a str, client: Rc<client::HttpClient>) -> Messaging<'a> {
Messaging { api_key, client }
}
/// Send a message to a recipient.
///
/// ## Examples
///
/// ```rust
/// use termii_rust::{
/// blocking::rest::termii,
/// common::switch::messaging::{Channel, MessageRequest, MessageType},
/// };
///
/// let client = termii::Termii::new("Your API key");
///
/// let message_payload = MessageRequest::new(
/// "234XXXXXXXXXX".to_string(),
/// "Your org sender id".to_string(),
/// "Your message".to_string(),
/// MessageType::Plain,
/// Channel::Generic,
/// );
///
/// let message_response = client.switch.messaging.send(message_payload).unwrap();
///
/// println!("{:?}", message_response);
/// ```
pub fn send(&self, mut message: MessageRequest) -> Result<MessageResponse, errors::HttpError> {
message.set_api_key(self.api_key);
let response = self.client.post("sms/send", None, None, Some(message))?;
let message_response = response_or_error_text_blocking!(response, MessageResponse);
Ok(message_response)
}
/// Send a message to multiple recipients.
///
/// ## Examples
///
/// ```rust
/// use termii_rust::{
/// blocking::rest::termii,
/// common::switch::messaging::{
/// Channel, MessageBulkRequest, MessageBulkResponse, MessageType,
/// },
/// };
///
/// let client = termii::Termii::new("Your API key");
///
/// let message_bulk_payload = MessageBulkRequest::new(
/// vec!["234XXXXXXXXXX".to_string(), "234XXXXXXXXXX".to_string()],
/// "Your org sender id".to_string(),
/// "Your message".to_string(),
/// MessageType::Plain,
/// Channel::Generic,
/// );
///
/// let message_bulk_response = client
/// .switch
/// .messaging
/// .send_bulk(message_bulk_payload)
/// .unwrap();
///
/// println!("{:?}", message_bulk_response);
/// ```
pub fn send_bulk(
&self,
mut message: MessageBulkRequest,
) -> Result<MessageBulkResponse, errors::HttpError> {
message.set_api_key(self.api_key);
let response = self
.client
.post("sms/send/bulk", None, None, Some(message))?;
let message_response = response_or_error_text_blocking!(response, MessageBulkResponse);
Ok(message_response)
}
}