beeper_desktop_api/client/
messages.rs1use crate::models::{ListMessagesOutput, SendMessageInput, SendMessageOutput};
4use crate::error::Result;
5use super::{BeeperClient, handle_response};
6
7impl BeeperClient {
8 pub async fn list_messages(
12 &self,
13 chat_id: &str,
14 cursor: Option<&str>,
15 direction: Option<&str>,
16 ) -> Result<ListMessagesOutput> {
17 let mut url = format!(
18 "{}/v1/chats/{}/messages",
19 self.get_base_url(),
20 urlencoding::encode(chat_id)
21 );
22
23 if let Some(c) = cursor {
24 url.push_str(&format!("?cursor={}", urlencoding::encode(c)));
25 if direction.is_some() {
26 url.push('&');
27 }
28 } else if direction.is_some() {
29 url.push('?');
30 }
31
32 if let Some(d) = direction {
33 url.push_str(&format!("direction={}", d));
34 }
35
36 let response = self
37 .get_http_client()
38 .get(&url)
39 .header("Authorization", self.get_auth_header())
40 .send()
41 .await
42 .map_err(|e| super::utils::map_request_error(e, self.get_base_url()))?;
43
44 handle_response(response).await
45 }
46
47 pub async fn send_message(&self, chat_id: &str, input: SendMessageInput) -> Result<SendMessageOutput> {
52 let url = format!(
53 "{}/v1/chats/{}/messages",
54 self.get_base_url(),
55 urlencoding::encode(chat_id)
56 );
57
58 let response = self
59 .get_http_client()
60 .post(&url)
61 .header("Authorization", self.get_auth_header())
62 .json(&input)
63 .send()
64 .await
65 .map_err(|e| super::utils::map_request_error(e, self.get_base_url()))?;
66
67 handle_response(response).await
68 }
69}