Skip to main content

systemprompt_api/services/middleware/
trace.rs

1use axum::extract::Request;
2use axum::middleware::Next;
3use axum::response::Response;
4use systemprompt_models::RequestContext;
5
6pub async fn inject_trace_header(request: Request, next: Next) -> Response {
7    let trace_id = request
8        .extensions()
9        .get::<RequestContext>()
10        .map(|ctx| ctx.trace_id().as_str().to_string());
11
12    let mut response = next.run(request).await;
13
14    if let Some(id) = trace_id {
15        if let Ok(header_value) = id.parse() {
16            response.headers_mut().insert("x-trace-id", header_value);
17        }
18    }
19
20    response
21}