pulseengine_mcp_security/
middleware.rs1use crate::config::SecurityConfig;
4use pulseengine_mcp_protocol::{Error, Request, Response};
5
6#[derive(Debug, Clone)]
8pub struct RequestContext {
9 pub request_id: uuid::Uuid,
10}
11
12#[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 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 Ok(response)
49 }
50}