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