aboutsummaryrefslogtreecommitdiffstats
path: root/src/server/middleware
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/middleware')
-rw-r--r--src/server/middleware/mod.rs1
-rw-r--r--src/server/middleware/request_id.rs20
2 files changed, 21 insertions, 0 deletions
diff --git a/src/server/middleware/mod.rs b/src/server/middleware/mod.rs
new file mode 100644
index 0000000..f68f27a
--- /dev/null
+++ b/src/server/middleware/mod.rs
@@ -0,0 +1 @@
+pub(super) mod request_id;
diff --git a/src/server/middleware/request_id.rs b/src/server/middleware/request_id.rs
new file mode 100644
index 0000000..7163c86
--- /dev/null
+++ b/src/server/middleware/request_id.rs
@@ -0,0 +1,20 @@
+use axum::{
+ extract::Request,
+ http::{HeaderValue, StatusCode},
+ middleware::Next,
+ response::Response,
+};
+use uuid::Uuid;
+
+pub const REQUEST_ID_HEADER: &str = "x-request-id";
+
+pub async fn add_request_id(mut request: Request, next: Next) -> Result<Response, StatusCode> {
+ let headers = request.headers_mut();
+ let id = Uuid::now_v7().to_string();
+ tracing::trace!(id = id, "attaching request id");
+ let bytes = id.as_bytes();
+
+ headers.insert(REQUEST_ID_HEADER, HeaderValue::from_bytes(bytes).unwrap());
+
+ Ok(next.run(request).await)
+}