upnp_rs/common/httpu/
builder.rs

1use crate::common::httpu::request::Request;
2use std::collections::HashMap;
3
4#[derive(Debug)]
5pub struct RequestBuilder {
6    request: Request,
7}
8
9impl RequestBuilder {
10    pub fn new(message: &str) -> Self {
11        RequestBuilder {
12            request: Request {
13                message: message.to_string(),
14                resource: None,
15                headers: Default::default(),
16            },
17        }
18    }
19
20    pub fn for_resource(&mut self, resource: &str) -> &mut Self {
21        self.request.resource = Some(resource.to_string());
22        self
23    }
24
25    pub fn for_any_resource(&mut self) -> &mut Self {
26        self.request.resource = None;
27        self
28    }
29
30    pub fn no_headers(&mut self) -> &mut Self {
31        self.request.headers = Default::default();
32        self
33    }
34
35    pub fn headers(&mut self, headers: HashMap<String, String>) -> &mut Self {
36        self.request.headers = headers;
37        self
38    }
39
40    pub fn add_header(&mut self, name: &str, value: &str) -> &mut Self {
41        self.request
42            .headers
43            .insert(name.to_string(), value.to_string());
44        self
45    }
46}
47
48impl From<RequestBuilder> for Request {
49    fn from(rb: RequestBuilder) -> Self {
50        rb.request
51    }
52}