1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
use http::{Request, Response};
use async_trait::async_trait;

pub enum RequestCapture {
    CircumventedResponse(Response<Vec<u8>>),
    ModifiedRequest(Request<Vec<u8>>),
    Continue,
}

pub enum ResponseCapture {
    ModifiedResponse(Response<Vec<u8>>),
    Continue,
}

#[allow(clippy::module_name_repetitions)]
#[async_trait]
pub trait MitmLayer {
    async fn capture_request(&mut self, request: &Request<Vec<u8>>) -> RequestCapture;
    async fn capture_response(&mut self, request: &Request<Vec<u8>>, response: &Response<Vec<u8>>) -> ResponseCapture;
}