example/middleware/
logger_example.rs

1use async_trait::async_trait;
2
3use obsidian::{context::Context, middleware::Middleware, ContextResult, EndpointExecutor};
4
5#[derive(Default)]
6pub struct LoggerExample {}
7
8pub struct LoggerExampleData(pub String);
9
10impl LoggerExample {
11    pub fn new() -> Self {
12        LoggerExample {}
13    }
14}
15
16#[async_trait]
17impl Middleware for LoggerExample {
18    async fn handle<'a>(
19        &'a self,
20        mut context: Context,
21        ep_executor: EndpointExecutor<'a>,
22    ) -> ContextResult {
23        println!(
24            "{} {} \n{}",
25            context.method(),
26            context.uri(),
27            context.headers().get("host").unwrap().to_str().unwrap()
28        );
29
30        context.add(LoggerExampleData("This is logger data".to_string()));
31
32        ep_executor.next(context).await
33    }
34}