Struct third_wheel::MitmProxy [−][src]
The main struct of the crate. Start here.
This struct is the workhorse and main interface for third-wheel.
By passing in a Mitm layer this can be customized to perform any required
behavior on HTTP requests and responses. Use the mitm_layer
function to
easily construct services to pass in to this struct.
Implementations
impl<T, U> MitmProxy<T, U> where
T: Layer<ThirdWheel, Service = U> + Sync + Send + 'static + Clone,
U: Service<Request<Body>, Response = <ThirdWheel as Service<Request<Body>>>::Response> + Sync + Send + Clone + 'static,
<U as Service<Request<Body>>>::Future: Send,
<U as Service<Request<Body>>>::Error: Error + Send + Sync + 'static,
[src]
T: Layer<ThirdWheel, Service = U> + Sync + Send + 'static + Clone,
U: Service<Request<Body>, Response = <ThirdWheel as Service<Request<Body>>>::Response> + Sync + Send + Clone + 'static,
<U as Service<Request<Body>>>::Future: Send,
<U as Service<Request<Body>>>::Error: Error + Send + Sync + 'static,
pub fn builder(
mitm_layer: T,
ca: CertificateAuthority
) -> MitmProxyBuilder<T, U>
[src]
mitm_layer: T,
ca: CertificateAuthority
) -> MitmProxyBuilder<T, U>
pub fn bind(
self,
addr: SocketAddr
) -> (SocketAddr, impl Future<Output = Result<(), Error>>)
[src]
self,
addr: SocketAddr
) -> (SocketAddr, impl Future<Output = Result<(), Error>>)
Bind to a socket address. Returns the address actually bound to, and the future to be executed that will run the server.
pub fn bind_with_graceful_shutdown<F>(
self,
addr: SocketAddr,
signal: F
) -> (SocketAddr, impl Future<Output = Result<(), Error>>) where
F: Future<Output = ()>,
[src]
self,
addr: SocketAddr,
signal: F
) -> (SocketAddr, impl Future<Output = Result<(), Error>>) where
F: Future<Output = ()>,
The same as bind except in the event that signal completes the proxy will gracefully terminate itself.
ⓘ
let trivial_mitm = MitmProxy::builder( mitm_layer(|req: Request<Body>, mut third_wheel: ThirdWheel| third_wheel.call(req)), third_wheel_ca, ).build(); let (third_wheel_killer, receiver) = tokio::sync::oneshot::channel(); let (third_wheel_address, mitm_fut) = trivial_mitm .bind_with_graceful_shutdown("127.0.0.1:0".parse().unwrap(), async { receiver.await.ok().unwrap() }); tokio::spawn(mitm_fut); // Wait for some stuff to happen third_wheel_killer.send(()).unwrap(); // This kills the proxy
Auto Trait Implementations
impl<T, U> RefUnwindSafe for MitmProxy<T, U> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, U> Send for MitmProxy<T, U>
impl<T, U> Sync for MitmProxy<T, U>
impl<T, U> Unpin for MitmProxy<T, U> where
T: Unpin,
T: Unpin,
impl<T, U> UnwindSafe for MitmProxy<T, U> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,