example/middleware/
logger_example.rs1use 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}