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}