diff --git a/src/server/http.rs b/src/server/http.rs index 3bf5698..c05ecaf 100644 --- a/src/server/http.rs +++ b/src/server/http.rs @@ -14,7 +14,7 @@ use yajrc::{RpcError, RpcMethod}; use crate::server::{RpcRequest, RpcResponse, SingleOrBatchRpcRequest}; use crate::util::{internal_error, parse_error}; -use crate::{HandleAny, Server}; +use crate::{Context, HandleAny, Server}; const FALLBACK_ERROR: &str = "{\"error\":{\"code\":-32603,\"message\":\"Internal error\",\"data\":\"Failed to serialize rpc response\"}}"; @@ -145,7 +145,12 @@ impl + Send + Sync> _Middleware< } } -struct DynMiddleware(Box>); +pub struct DynMiddleware(Box>); +impl DynMiddleware { + pub fn new>(middleware: M) -> Self { + Self(Box::new(middleware)) + } +} impl Clone for DynMiddleware { fn clone(&self) -> Self { self.0.dyn_clone() @@ -177,8 +182,7 @@ impl Server { } impl HttpServer { pub fn middleware>(mut self, middleware: T) -> Self { - self.middleware - .push_back(DynMiddleware(Box::new(middleware))); + self.middleware.push_back(DynMiddleware::new(middleware)); self } async fn process_http_request(&self, mut req: Request) -> Response {