use std::convert::Infallible; use headers::HeaderMapExt; use touche::{server::Service, Body, Request, Response, Server, StatusCode}; #[derive(Clone)] struct UploadService { max_length: u64, } impl Service for UploadService { type Body = &'static str; type Error = Infallible; fn call(&self, _req: Request) -> Result, Self::Error> { Ok(Response::builder() .status(StatusCode::OK) .body("Thanks for the info!") .unwrap()) } fn should_continue(&self, req: &Request) -> StatusCode { match req.headers().typed_get::() { Some(len) if len.0 <= self.max_length => StatusCode::CONTINUE, _ => StatusCode::EXPECTATION_FAILED, } } } fn main() -> std::io::Result<()> { Server::bind("0.0.0.0:4444").serve(UploadService { max_length: 1024 }) }