reqwest-conditional-middleware

CI docs.rs

A middleware wrapper that enables (or disables) a wrapped Reqwest middleware on a per-request basis

Example

Usage of this crate depends on a few crates:

toml async-trait = "0.1.51" reqwest = version = "0.11" reqwest-conditional-middleware = "0.2.0" reqwest-middleware = "0.2.1" task-local-extensions = "0.1.4"

This is an example of a conditional middleware that short-circuits a middleware stack and returns OK whenever the request method is GET

```rust use reqwest::{Request, Response}; use reqwestconditionalmiddleware::ConditionalMiddleware; use reqwestmiddleware::{Middleware, Next, Result}; use tasklocal_extensions::Extensions;

struct AlwaysOk;

[asynctrait::asynctrait]

impl Middleware for AlwaysOk { async fn handle( &self, req: Request, _extensions: &mut Extensions, _next: Next<'>, ) -> Result { let builder = http::Response::builder().status(http::StatusCode::OK); Ok(builder.body("").unwrap().into()) } }

let conditional = ConditionalMiddleware::new( AlwaysOk, |req: &Request| req.method() == http::Method::GET );

```