use crate::{
mcp_http::{types::GenericBody, McpAppState, Middleware, MiddlewareNext},
mcp_server::error::TransportServerResult,
};
use async_trait::async_trait;
use http::{Request, Response};
use std::sync::Arc;
pub struct LoggingMiddleware;
#[async_trait]
impl Middleware for LoggingMiddleware {
async fn handle<'req>(
&self,
req: Request<&'req str>,
state: Arc<McpAppState>,
next: MiddlewareNext<'req>,
) -> TransportServerResult<Response<GenericBody>> {
println!("➡️ Logging request: {}", req.uri());
let res = next(req, state).await?;
println!("⬅️ Logging response: {}", res.status());
Ok(res)
}
}