hac_core/net/
request_client.rs1use crate::collection::types::Request;
2
3#[derive(Debug)]
4pub struct RequestClient {
5 client: reqwest::Client,
6}
7
8impl RequestClient {
9 pub fn new() -> Self {
10 RequestClient {
11 client: reqwest::Client::new(),
12 }
13 }
14
15 pub fn get(&self, request: &Request) -> reqwest::RequestBuilder {
16 let request_builder = self.client.get(&request.uri);
17 self.append_headers(request, request_builder)
18 }
19
20 pub fn post(&self, request: &Request) -> reqwest::RequestBuilder {
21 let request_builder = self.client.post(&request.uri);
22 self.append_headers(request, request_builder)
23 }
24
25 pub fn put(&self, request: &Request) -> reqwest::RequestBuilder {
26 let request_builder = self.client.put(&request.uri);
27 self.append_headers(request, request_builder)
28 }
29
30 pub fn patch(&self, request: &Request) -> reqwest::RequestBuilder {
31 let request_builder = self.client.patch(&request.uri);
32 self.append_headers(request, request_builder)
33 }
34
35 pub fn delete(&self, request: &Request) -> reqwest::RequestBuilder {
36 let request_builder = self.client.delete(&request.uri);
37 self.append_headers(request, request_builder)
38 }
39
40 fn append_headers(
41 &self,
42 request: &Request,
43 mut request_builder: reqwest::RequestBuilder,
44 ) -> reqwest::RequestBuilder {
45 if let Some(ref headers) = request.headers {
46 for header in headers.iter().filter(|header| header.enabled) {
47 let header_name = header.pair.0.clone();
48 let header_value = header.pair.1.clone();
49 request_builder = request_builder.header(header_name, header_value);
50 }
51 }
52
53 request_builder
54 }
55}
56
57impl Default for RequestClient {
58 fn default() -> Self {
59 Self::new()
60 }
61}