pulseengine_mcp_security/
middleware.rs

1//! Security middleware implementation
2
3use crate::config::SecurityConfig;
4use pulseengine_mcp_protocol::{Error, Request, Response};
5
6/// Simple request context for security
7#[derive(Debug, Clone)]
8pub struct RequestContext {
9    pub request_id: uuid::Uuid,
10}
11
12/// Security middleware for request/response processing
13#[derive(Clone)]
14pub struct SecurityMiddleware {
15    config: SecurityConfig,
16}
17
18impl SecurityMiddleware {
19    pub fn new(config: SecurityConfig) -> Self {
20        Self { config }
21    }
22
23    pub async fn process_request(
24        &self,
25        request: Request,
26        _context: &RequestContext,
27    ) -> Result<Request, Error> {
28        if self.config.validate_requests {
29            // Basic validation - ensure required fields
30            if request.jsonrpc != "2.0" {
31                return Err(Error::invalid_request("Invalid JSON-RPC version"));
32            }
33
34            if request.method.is_empty() {
35                return Err(Error::invalid_request("Method cannot be empty"));
36            }
37        }
38
39        Ok(request)
40    }
41
42    pub async fn process_response(
43        &self,
44        response: Response,
45        _context: &RequestContext,
46    ) -> Result<Response, Error> {
47        // Add security headers or process response as needed
48        Ok(response)
49    }
50}