flawless_slack/http_client/
reqwest_http_client.rs

1use crate::{HttpClient, HttpClientError};
2
3pub struct ReqwestHttpClient;
4
5impl From<reqwest::Error> for HttpClientError {
6    fn from(_: reqwest::Error) -> Self {
7        HttpClientError::HttpError
8    }
9}
10
11impl HttpClient for ReqwestHttpClient {
12    fn post(&self, url: &str, headers: &[(&str, &str)], payload: &str) -> Result<String, HttpClientError> {
13        let client = reqwest::blocking::Client::new();
14
15        let mut res = client.post(url).body(payload.to_owned());
16
17        for (key, value) in headers {
18            res = res.header(*key, *value);
19        }
20
21        let res = res.send()?.text()?;
22
23        Ok(res)
24    }
25
26    fn get(
27        &self,
28        url: &str,
29        headers: &[(&str, &str)],
30        queries: &[(&str, &str)],
31    ) -> Result<String, HttpClientError> {
32        let client = reqwest::blocking::Client::new();
33
34        let mut res = client.get(url).body("");
35
36        for (key, value) in headers {
37            res = res.header(*key, *value);
38        }
39
40        for (key, value) in queries {
41            res = res.query(&[(key, value)]);
42        }
43
44        let res = res.send()?.text()?;
45
46        Ok(res)
47    }
48}