Skip to main content

chaser_oxide/handler/
http.rs

1use chromiumoxide_cdp::cdp::browser_protocol::network::{InterceptionId, RequestId, Response};
2use chromiumoxide_cdp::cdp::browser_protocol::page::FrameId;
3use std::collections::HashMap;
4
5#[derive(Debug, Clone)]
6pub struct HttpRequest {
7    request_id: RequestId,
8    pub from_memory_cache: bool,
9    pub failure_text: Option<String>,
10    pub interception_id: Option<InterceptionId>,
11    pub response: Option<Response>,
12    pub headers: HashMap<String, String>,
13    pub frame: Option<FrameId>,
14    pub is_navigation_request: bool,
15    pub allow_interception: bool,
16    pub interception_handled: bool,
17    pub method: Option<String>,
18    pub url: Option<String>,
19    pub resource_type: Option<String>,
20    pub post_data: Option<String>,
21    pub redirect_chain: Vec<HttpRequest>,
22}
23
24impl HttpRequest {
25    pub fn new(
26        request_id: RequestId,
27        frame: Option<FrameId>,
28        interception_id: Option<InterceptionId>,
29        allow_interception: bool,
30        redirect_chain: Vec<HttpRequest>,
31    ) -> Self {
32        Self {
33            request_id,
34            from_memory_cache: false,
35            failure_text: None,
36            interception_id,
37            response: None,
38            headers: Default::default(),
39            frame,
40            is_navigation_request: false,
41            allow_interception,
42            interception_handled: false,
43            method: None,
44            url: None,
45            resource_type: None,
46            post_data: None,
47            redirect_chain,
48        }
49    }
50
51    pub fn request_id(&self) -> &RequestId {
52        &self.request_id
53    }
54
55    pub(crate) fn set_response(&mut self, response: Response) {
56        self.response = Some(response)
57    }
58}