systemprompt_api/services/middleware/
trace.rs1use 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}