use reqwest_middleware::{Middleware, Next};
pub struct WasmProxyMiddleware;
#[cfg_attr(all(target_arch = "wasm32", feature = "wasm"), async_trait::async_trait(?Send))]
#[cfg_attr(
not(all(target_arch = "wasm32", feature = "wasm")),
async_trait::async_trait
)]
impl Middleware for WasmProxyMiddleware {
async fn handle(
&self,
mut req: reqwest::Request,
extensions: &mut http::Extensions,
next: Next<'_>,
) -> reqwest_middleware::Result<reqwest::Response> {
let original = req.url().to_string();
let proxied = format!(
"https://worker.nabdev.workers.dev/?url={}",
urlencoding::encode(&original)
);
*req.url_mut() = proxied.parse().unwrap();
next.run(req, extensions).await
}
}