termii_rust/async_impl/rest/switch/number.rs
1//! Send messages to your organization's customers using auto-generated messaging numbers.
2
3use std::sync::Arc;
4
5use crate::{
6 async_impl::http::client,
7 common::{
8 errors,
9 switch::number::{NumberMessageRequest, NumberMessageResponse},
10 },
11};
12
13#[derive(Debug)]
14pub struct Number<'a> {
15 api_key: &'a str,
16 client: Arc<client::HttpClient>,
17}
18
19impl<'a> Number<'a> {
20 pub(crate) fn new(api_key: &'a str, client: Arc<client::HttpClient>) -> Number<'a> {
21 Number { api_key, client }
22 }
23
24 /// Send a message to a recipient using termii's auto generated number.
25 ///
26 /// ## Examples
27 ///
28 /// ```rust
29 /// use termii_rust::{async_impl::rest::termii, common::switch::number::NumberMessageRequest};
30 ///
31 /// let client = termii::Termii::new("Your API key");
32 ///
33 /// let message_payload =
34 /// NumberMessageRequest::new("234XXXXXXXXXX".to_string(), "Your message".to_string());
35 ///
36 /// let message_response = client.switch.number.send(message_payload).await.unwrap();
37 ///
38 /// println!("{:?}", message_response);
39 /// ```
40 pub async fn send(
41 &self,
42 mut message: NumberMessageRequest,
43 ) -> Result<NumberMessageResponse, errors::HttpError> {
44 message.set_api_key(self.api_key);
45
46 let response = self
47 .client
48 .post("sms/number/send", None, None, Some(message))
49 .await?;
50
51 let message_response = response_or_error_text_async!(response, NumberMessageResponse);
52
53 Ok(message_response)
54 }
55}