https://github.com/oxidecomputer/reqwest-conditional-middleware
A middleware wrapper that enables (or disables) a wrapped Reqwest middleware on a per-request basis
https://github.com/oxidecomputer/reqwest-conditional-middleware
Last synced: 11 months ago
JSON representation
A middleware wrapper that enables (or disables) a wrapped Reqwest middleware on a per-request basis
- Host: GitHub
- URL: https://github.com/oxidecomputer/reqwest-conditional-middleware
- Owner: oxidecomputer
- License: mit
- Created: 2022-06-21T18:45:17.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-11-11T20:24:56.000Z (over 1 year ago)
- Last Synced: 2025-07-06T13:50:37.281Z (12 months ago)
- Language: Rust
- Size: 17.6 KB
- Stars: 7
- Watchers: 21
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# reqwest-conditional-middleware
[](https://github.com/oxidecomputer/reqwest-conditional-middleware/actions?query=workflow%3ACI) [](https://docs.rs/reqwest-conditional-middleware)
A middleware wrapper that enables (or disables) a wrapped [Reqwest middleware](https://github.com/TrueLayer/reqwest-middleware) on a per-request basis
### Example
Usage of this crate depends on a few crates:
```toml
async-trait = "0.1.80"
http = "1"
reqwest = version = "0.12"
reqwest-conditional-middleware = "0.4.0"
reqwest-middleware = "0.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 reqwest_conditional_middleware::ConditionalMiddleware;
use reqwest_middleware::{Middleware, Next, Result};
use task_local_extensions::Extensions;
struct AlwaysOk;
#[async_trait::async_trait]
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
);
```