use crate::config::SecurityConfig;
use pulseengine_mcp_protocol::{Error, Request, Response};
#[derive(Debug, Clone)]
pub struct RequestContext {
pub request_id: uuid::Uuid,
}
#[derive(Clone)]
pub struct SecurityMiddleware {
config: SecurityConfig,
}
impl SecurityMiddleware {
pub fn new(config: SecurityConfig) -> Self {
Self { config }
}
pub fn process_request(
&self,
request: Request,
_context: &RequestContext,
) -> Result<Request, Error> {
if self.config.validate_requests {
if request.jsonrpc != "2.0" {
return Err(Error::invalid_request("Invalid JSON-RPC version"));
}
if request.method.is_empty() {
return Err(Error::invalid_request("Method cannot be empty"));
}
}
Ok(request)
}
pub fn process_response(
&self,
response: Response,
_context: &RequestContext,
) -> Result<Response, Error> {
Ok(response)
}
}
#[cfg(test)]
#[path = "middleware_tests.rs"]
mod middleware_tests;