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