rust_webx_host/
request_id.rs1use rust_webx_core::error::Result;
4use rust_webx_core::http::IHttpContext;
5use rust_webx_core::middleware::IMiddleware;
6use std::ops::ControlFlow;
7use uuid::Uuid;
8
9pub struct RequestIdMiddleware;
11
12impl RequestIdMiddleware {
13 pub fn new() -> Self {
14 Self
15 }
16}
17
18impl Default for RequestIdMiddleware {
19 fn default() -> Self {
20 Self::new()
21 }
22}
23
24#[async_trait::async_trait]
25impl IMiddleware for RequestIdMiddleware {
26 async fn invoke(&self, ctx: &mut dyn IHttpContext) -> Result<ControlFlow<()>> {
27 let id = Uuid::new_v4().to_string();
28 ctx.response_mut().set_header("x-request-id", &id);
29 Ok(ControlFlow::Continue(()))
30 }
31}