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 fn process_request(
29 &self,
30 request: Request,
31 _context: &RequestContext,
32 ) -> Result<Request, Error> {
33 if self.config.validate_requests {
34 if request.jsonrpc != "2.0" {
36 return Err(Error::invalid_request("Invalid JSON-RPC version"));
37 }
38
39 if request.method.is_empty() {
40 return Err(Error::invalid_request("Method cannot be empty"));
41 }
42 }
43
44 Ok(request)
45 }
46
47 pub fn process_response(
53 &self,
54 response: Response,
55 _context: &RequestContext,
56 ) -> Result<Response, Error> {
57 Ok(response)
59 }
60}
61
62#[cfg(test)]
63#[path = "middleware_tests.rs"]
64mod middleware_tests;