clickatell_api/one_api/send_messages/
request.rs

1use crate::one_api::send_messages::Message;
2use crate::one_api::{Channel, Error, Result};
3use serde::Serialize;
4
5/// Request to send messages
6#[derive(Serialize, Debug, Default)]
7pub struct Request {
8  messages: Vec<Message>,
9}
10
11impl Request {
12  pub fn new() -> Self {
13    Self::default()
14  }
15
16  /// Adds a new message to the request.
17  ///
18  /// Returns [Error::TooManyMessages] if the number of messages exceeds the gateway limit of 100
19  /// messages per request.
20  pub fn add_message(&mut self, channel: Channel, to: &str, content: &str) -> Result<()> {
21    if self.message_count() < 100 {
22      self.messages.push(Message::new(channel, to, content)?);
23      Ok(())
24    } else {
25      Err(Error::TooManyMessages)
26    }
27  }
28
29  /// Current number of messages in the request
30  pub fn message_count(&self) -> usize {
31    self.messages.len()
32  }
33}