axum_request_validator/
validation.rs1use axum::body::Body;
4
5pub type Error<V> = http_body_request_validator::Error<axum::Error, V>;
7
8pub type Data = bytes::Bytes;
10
11pub type Bufferer = http_body_request_validator::http_body_util::Bufferer<Data>;
13
14pub type BuffererBuffered = http_body_request_validator::bufferer::BufferedFor<Bufferer, Body>;
16
17#[cfg(test)]
18static_assertions::assert_type_eq_all!(Data, bytes::Bytes);
19
20enum CustomBufferedToBody {}
23
24impl http_body_request_validator::convert::BufferedToBody for CustomBufferedToBody {
25 type Buffered = BuffererBuffered;
26 type Body = Body;
27
28 fn buffered_to_body(buffered: Self::Buffered) -> Self::Body {
29 let body =
30 http_body_request_validator::convert::Trivial::<Self::Buffered>::buffered_to_body(
31 buffered,
32 );
33 Body::new(body)
34 }
35}
36
37pub async fn validate<Validator>(
39 validator: Validator,
40 req: axum::http::Request<Body>,
41) -> Result<axum::http::Request<Body>, Error<Validator::Error>>
42where
43 Validator: http_request_validator::Validator<Data>,
44{
45 http_body_request_validator::BufferingValidator::new(Bufferer::new())
46 .with_buffered_to_out_body::<CustomBufferedToBody>()
47 .validate(validator, req)
48 .await
49}