Skip to main content

slack_api/sync/mods/
search.rs

1//=============================================================================
2//
3//                    WARNING: This file is AUTO-GENERATED
4//
5// Do not make changes directly to this file.
6//
7// If you would like to make a change to the library, please update the schema
8// definitions at https://github.com/slack-rs/slack-api-schemas
9//
10// If you would like to make a change how the library was generated,
11// please edit https://github.com/slack-rs/slack-rs-api/tree/master/codegen
12//
13//=============================================================================
14
15//! Search your team's files and messages.
16
17pub use crate::mod_types::search_types::*;
18use crate::sync::requests::SlackWebRequestSender;
19
20/// Searches for messages and files matching a query.
21///
22/// Wraps https://api.slack.com/methods/search.all
23
24pub 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, &params[..])
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
57/// Searches for files matching a query.
58///
59/// Wraps https://api.slack.com/methods/search.files
60
61pub 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, &params[..])
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
94/// Searches for messages matching a query.
95///
96/// Wraps https://api.slack.com/methods/search.messages
97
98pub 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, &params[..])
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}