flawless_slack/http_client/
reqwest_http_client.rs1use 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}