claude-code-api 0.1.3

OpenAI-compatible API gateway for Claude Code CLI
use axum::{
    extract::Request,
    http::HeaderName,
    middleware::Next,
    response::Response,
};
use uuid::Uuid;

pub static X_REQUEST_ID: HeaderName = HeaderName::from_static("x-request-id");

pub async fn add_request_id(
    mut req: Request,
    next: Next,
) -> Response {
    let request_id = req
        .headers()
        .get(&X_REQUEST_ID)
        .and_then(|v| v.to_str().ok())
        .map(String::from)
        .unwrap_or_else(|| Uuid::new_v4().to_string());
    
    req.headers_mut().insert(
        X_REQUEST_ID.clone(),
        request_id.parse().unwrap(),
    );
    
    let mut response = next.run(req).await;
    
    response.headers_mut().insert(
        X_REQUEST_ID.clone(),
        request_id.parse().unwrap(),
    );
    
    response
}