slack_api/sync/mods/
search.rs1pub use crate::mod_types::search_types::*;
18use crate::sync::requests::SlackWebRequestSender;
19
20pub fn all<R>(
25 client: &R,
26 token: &str,
27 request: &AllRequest<'_>,
28) -> Result<AllResponse, AllError<R::Error>>
29where
30 R: SlackWebRequestSender,
31{
32 let count = request.count.map(|count| count.to_string());
33 let page = request.page.map(|page| page.to_string());
34 let params = vec![
35 Some(("token", token)),
36 Some(("query", request.query)),
37 request.sort.map(|sort| ("sort", sort)),
38 request.sort_dir.map(|sort_dir| ("sort_dir", sort_dir)),
39 request
40 .highlight
41 .map(|highlight| ("highlight", if highlight { "1" } else { "0" })),
42 count.as_ref().map(|count| ("count", &count[..])),
43 page.as_ref().map(|page| ("page", &page[..])),
44 ];
45 let params = params.into_iter().filter_map(|x| x).collect::<Vec<_>>();
46 let url = crate::get_slack_url_for_method("search.all");
47 client
48 .send(&url, ¶ms[..])
49 .map_err(AllError::Client)
50 .and_then(|result| {
51 serde_json::from_str::<AllResponse>(&result)
52 .map_err(|e| AllError::MalformedResponse(result, e))
53 })
54 .and_then(|o| o.into())
55}
56
57pub fn files<R>(
62 client: &R,
63 token: &str,
64 request: &FilesRequest<'_>,
65) -> Result<FilesResponse, FilesError<R::Error>>
66where
67 R: SlackWebRequestSender,
68{
69 let count = request.count.map(|count| count.to_string());
70 let page = request.page.map(|page| page.to_string());
71 let params = vec![
72 Some(("token", token)),
73 Some(("query", request.query)),
74 request.sort.map(|sort| ("sort", sort)),
75 request.sort_dir.map(|sort_dir| ("sort_dir", sort_dir)),
76 request
77 .highlight
78 .map(|highlight| ("highlight", if highlight { "1" } else { "0" })),
79 count.as_ref().map(|count| ("count", &count[..])),
80 page.as_ref().map(|page| ("page", &page[..])),
81 ];
82 let params = params.into_iter().filter_map(|x| x).collect::<Vec<_>>();
83 let url = crate::get_slack_url_for_method("search.files");
84 client
85 .send(&url, ¶ms[..])
86 .map_err(FilesError::Client)
87 .and_then(|result| {
88 serde_json::from_str::<FilesResponse>(&result)
89 .map_err(|e| FilesError::MalformedResponse(result, e))
90 })
91 .and_then(|o| o.into())
92}
93
94pub fn messages<R>(
99 client: &R,
100 token: &str,
101 request: &MessagesRequest<'_>,
102) -> Result<MessagesResponse, MessagesError<R::Error>>
103where
104 R: SlackWebRequestSender,
105{
106 let count = request.count.map(|count| count.to_string());
107 let page = request.page.map(|page| page.to_string());
108 let params = vec![
109 Some(("token", token)),
110 Some(("query", request.query)),
111 request.sort.map(|sort| ("sort", sort)),
112 request.sort_dir.map(|sort_dir| ("sort_dir", sort_dir)),
113 request
114 .highlight
115 .map(|highlight| ("highlight", if highlight { "1" } else { "0" })),
116 count.as_ref().map(|count| ("count", &count[..])),
117 page.as_ref().map(|page| ("page", &page[..])),
118 ];
119 let params = params.into_iter().filter_map(|x| x).collect::<Vec<_>>();
120 let url = crate::get_slack_url_for_method("search.messages");
121 client
122 .send(&url, ¶ms[..])
123 .map_err(MessagesError::Client)
124 .and_then(|result| {
125 serde_json::from_str::<MessagesResponse>(&result)
126 .map_err(|e| MessagesError::MalformedResponse(result, e))
127 })
128 .and_then(|o| o.into())
129}