aboutsummaryrefslogtreecommitdiffstats
path: root/lib/warden-middleware/src/lib.rs
diff options
context:
space:
mode:
authorrtkay123 <dev@kanjala.com>2025-08-12 05:13:32 +0200
committerrtkay123 <dev@kanjala.com>2025-08-12 05:13:32 +0200
commitc5ea875f544824b0c042bf7c0a58b3134f9c0373 (patch)
tree4913d4ff2b408c7157e33894e40deec570ecce9e /lib/warden-middleware/src/lib.rs
parent9c850d6c4d0ed468709c2eb5340d7b64bbb9aa68 (diff)
downloadwarden-c5ea875f544824b0c042bf7c0a58b3134f9c0373.tar.bz2
warden-c5ea875f544824b0c042bf7c0a58b3134f9c0373.zip
feat(config): get active routing
Diffstat (limited to 'lib/warden-middleware/src/lib.rs')
-rw-r--r--lib/warden-middleware/src/lib.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/warden-middleware/src/lib.rs b/lib/warden-middleware/src/lib.rs
new file mode 100644
index 0000000..6e3a0f4
--- /dev/null
+++ b/lib/warden-middleware/src/lib.rs
@@ -0,0 +1,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))
+}