diff options
| author | Fuwn <[email protected]> | 2023-03-29 07:58:05 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-03-29 08:34:11 +0000 |
| commit | 68b508fda73f5458202e6b3abf52778663954f84 (patch) | |
| tree | f9a9dfd15946c9d5429b23b182ec6cbae7073fd6 /src | |
| parent | ci(check): use table toolchain (diff) | |
| download | windmark-68b508fda73f5458202e6b3abf52778663954f84.tar.xz windmark-68b508fda73f5458202e6b3abf52778663954f84.zip | |
refactor(returnable): unify callback context
Diffstat (limited to 'src')
| -rw-r--r-- | src/handler.rs | 14 | ||||
| -rw-r--r-- | src/router.rs | 22 |
2 files changed, 19 insertions, 17 deletions
diff --git a/src/handler.rs b/src/handler.rs index 5377703..15dfd6d 100644 --- a/src/handler.rs +++ b/src/handler.rs @@ -16,16 +16,12 @@ // Copyright (C) 2022-2022 Fuwn <[email protected]> // SPDX-License-Identifier: GPL-3.0-only -use crate::{returnable::RouteContext, Response}; +use crate::{returnable, returnable::RouteContext, Response}; pub type RouteResponse = Box<dyn FnMut(RouteContext<'_>) -> Response<'_> + Send + Sync>; -pub type ErrorResponse = Box< - dyn FnMut(crate::returnable::ErrorContext<'_>) -> Response<'_> + Send + Sync, ->; -pub type Callback = Box< - dyn FnMut(&tokio::net::TcpStream, &url::Url, Option<&matchit::Params<'_, '_>>) - + Send - + Sync, ->; +pub type ErrorResponse = + Box<dyn FnMut(returnable::ErrorContext<'_>) -> Response<'_> + Send + Sync>; +pub type Callback = + Box<dyn FnMut(returnable::CallbackContext<'_>) + Send + Sync>; pub type Partial = Box<dyn FnMut(RouteContext<'_>) -> String + Send + Sync>; diff --git a/src/router.rs b/src/router.rs index 6d2737e..dc81d40 100644 --- a/src/router.rs +++ b/src/router.rs @@ -316,9 +316,12 @@ impl Router { )); } - (*self.pre_route_callback).lock().unwrap()(stream.get_ref(), &url, { - route.as_ref().map_or(None, |route| Some(&route.params)) - }); + (*self.pre_route_callback).lock().unwrap()(CallbackContext::new( + stream.get_ref(), + &url, + route.as_ref().map_or(None, |route| Some(&route.params)), + &stream.ssl().peer_certificate(), + )); let content = if let Ok(ref route) = route { let footers_length = (*self.footers.lock().unwrap()).len(); @@ -418,9 +421,12 @@ impl Router { )); } - (*self.post_route_callback).lock().unwrap()(stream.get_ref(), &url, { - route.as_ref().map_or(None, |route| Some(&route.params)) - }); + (*self.post_route_callback).lock().unwrap()(CallbackContext::new( + stream.get_ref(), + &url, + route.as_ref().map_or(None, |route| Some(&route.params)), + &stream.ssl().peer_certificate(), + )); stream.shutdown().await?; @@ -756,8 +762,8 @@ impl Default for Router { ), #[cfg(feature = "logger")] default_logger: false, - pre_route_callback: Arc::new(Mutex::new(Box::new(|_, _, _| {}))), - post_route_callback: Arc::new(Mutex::new(Box::new(|_, _, _| {}))), + pre_route_callback: Arc::new(Mutex::new(Box::new(|_| {}))), + post_route_callback: Arc::new(Mutex::new(Box::new(|_| {}))), charset: "utf-8".to_string(), language: "en".to_string(), port: 1965, |