aboutsummaryrefslogtreecommitdiffstats
path: root/lib/warden-middleware/src/lib.rs
blob: 6e3a0f4a2efde2e19ea693570be38e45ffe8d824 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mod metrics;
mod trace_layer;

use metrics::*;
use trace_layer::*;

use axum::{Router, http::HeaderName, middleware};
use tower_http::request_id::{MakeRequestUuid, PropagateRequestIdLayer, SetRequestIdLayer};

const REQUEST_ID_HEADER: &str = "x-request-id";

pub fn apply<T: Clone + Send + Sync + 'static>(router: Router<T>) -> Router<T> {
    let x_request_id = HeaderName::from_static(REQUEST_ID_HEADER);

    let router = router.layer(PropagateRequestIdLayer::new(x_request_id.clone()));

    apply_trace_context_middleware(router)
        .layer(SetRequestIdLayer::new(x_request_id, MakeRequestUuid))
        .route_layer(middleware::from_fn(apply_metrics_middleware))
}