1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
use darpi_code_gen::middleware;
use darpi_web::{middleware::Expect, request::PayloadError, Body};
use hyper::body::HttpBody;

#[middleware(Request)]
pub async fn body_size_limit(b: &Body, size: Expect<u64>) -> Result<(), PayloadError> {
    if let Some(limit) = b.size_hint().upper() {
        if size < limit {
            return Err(PayloadError::Size(size.into_inner(), limit));
        }
    }
    Ok(())
}