termii_rust/blocking/rest/switch/
sender_id.rs1use std::{collections::HashMap, rc::Rc};
4
5use crate::{
6 blocking::http::client,
7 common::{
8 errors, pagination,
9 switch::sender_id::{
10 SenderIDItem, SenderIDRequest, SenderIDRequestResponse, SenderIDResponse,
11 },
12 },
13};
14
15#[derive(Debug)]
16pub struct SenderID<'a> {
17 api_key: &'a str,
18 client: Rc<client::HttpClient>,
19}
20
21impl<'a> SenderID<'a> {
22 pub(crate) fn new(api_key: &'a str, client: Rc<client::HttpClient>) -> SenderID<'a> {
23 SenderID { api_key, client }
24 }
25
26 pub(crate) fn _get(&self, page: &str) -> Result<Vec<SenderIDItem>, errors::HttpError> {
27 let mut params = HashMap::new();
28 params.insert("api_key", self.api_key);
29 params.insert("page", page);
30
31 let response = self.client.get("sender-id", Some(params), None)?;
32
33 let sender_id_item = response_or_error_text_blocking!(response, SenderIDResponse);
34
35 Ok(sender_id_item.data)
36 }
37
38 pub fn get(&self, page: Option<&str>) -> Result<Vec<SenderIDItem>, errors::HttpError> {
57 let page = page.unwrap_or("1");
58 let sender_id_items = self._get(page)?;
59 Ok(sender_id_items)
60 }
61
62 pub fn request(
82 &self,
83 mut payload: SenderIDRequest,
84 ) -> Result<SenderIDRequestResponse, errors::HttpError> {
85 payload.set_api_key(self.api_key);
86
87 let response = self
88 .client
89 .post("sender-id/request", None, None, Some(payload))?;
90
91 let sender_id_request_response =
92 response_or_error_text_blocking!(response, SenderIDRequestResponse);
93
94 Ok(sender_id_request_response)
95 }
96}
97
98impl pagination::PaginatedResource for SenderID<'_> {
99 type Item = SenderIDItem;
100
101 fn _get(&self, page: &str) -> Result<Vec<Self::Item>, errors::HttpError> {
102 SenderID::_get(self, page)
103 }
104}