wae_https/middleware/
mod.rs1#![doc = include_str!("readme.md")]
2
3mod compression;
4mod cors;
5mod request_id;
6mod tracing;
7
8pub use compression::{Compression, CompressionAlgorithm, CompressionBuilder, CompressionConfig};
9pub use cors::{CorsConfig, cors_permissive, cors_strict};
10pub use request_id::RequestIdLayer;
11pub use tracing::TracingLayer;
12
13pub use tower_http::cors::CorsLayer;
14
15pub use tower_http::{
17 catch_panic::CatchPanicLayer, normalize_path::NormalizePathLayer, request_id::MakeRequestUuid,
18 set_header::SetRequestHeaderLayer, set_header::SetResponseHeaderLayer, timeout::TimeoutLayer,
19};
20
21use std::time::Duration;
22
23pub struct TimeoutBuilder {
25 timeout: Duration,
26}
27
28impl TimeoutBuilder {
29 pub fn new() -> Self {
31 Self { timeout: Duration::from_secs(30) }
32 }
33
34 pub fn timeout(mut self, timeout: Duration) -> Self {
36 self.timeout = timeout;
37 self
38 }
39
40 pub fn build(self) -> TimeoutLayer {
42 TimeoutLayer::with_status_code(http::StatusCode::REQUEST_TIMEOUT, self.timeout)
43 }
44}
45
46impl Default for TimeoutBuilder {
47 fn default() -> Self {
48 Self::new()
49 }
50}
51
52pub struct NormalizePathConfig;
54
55impl NormalizePathConfig {
56 pub fn new() -> NormalizePathLayer {
58 NormalizePathLayer::trim_trailing_slash()
59 }
60}