use bytes::Bytes;
use http::{HeaderMap, Method, StatusCode, Uri};
use super::Result;
use crate::wasm_compat::{WasmBoxedFuture, WasmCompatSend, WasmCompatSync};
pub trait HttpMiddleware: WasmCompatSend + WasmCompatSync {
fn before_request_headers<'a>(
&'a self,
_method: &'a Method,
_uri: &'a Uri,
_headers: &'a mut HeaderMap,
) -> WasmBoxedFuture<'a, Result<()>> {
Box::pin(async { Ok(()) })
}
fn before_request_body<'a>(
&'a self,
_method: &'a Method,
_uri: &'a Uri,
_headers: &'a HeaderMap,
body: Bytes,
) -> WasmBoxedFuture<'a, Result<Bytes>> {
Box::pin(async move { Ok(body) })
}
fn after_response<'a>(
&'a self,
_method: &'a Method,
_uri: &'a Uri,
_status: StatusCode,
_headers: &'a HeaderMap,
) -> WasmBoxedFuture<'a, Result<()>> {
Box::pin(async { Ok(()) })
}
}