Skip to main content

15_hook/
15_hook.rs

1use flyer::{
2    hooks::Hook,
3    request::Request,
4    response::Response,
5    routing::next::Next,
6    server
7};
8
9pub struct CustomHook { }
10
11impl CustomHook {
12    pub fn new() -> Self {
13        Self { }
14    }
15}
16
17impl Hook for CustomHook {
18    async fn before(&self, req: Request, res: Response, next: Next) ->  Response {
19        // Do some work before request hits middleware and route.
20        println!("BEFORE HOOK");
21        next.handle(req, res)
22    }
23
24    async fn after(&self, req: Request, res: Response, next: Next) -> Response {
25        // Do some work after request hits middleware and route.
26        println!("AFTER HOOK");
27        next.handle(req, res)
28    }
29}
30
31pub fn main() {
32    let server = server("127.0.0.1", 9999);
33
34    server.router().get("/", async |_req, res| {
35        println!("CONTROLLER");
36        res.html("<h1>Hello controller</h1>")
37    });
38
39    server.hook(CustomHook::new());
40
41    println!("\r\n\r\nRunning Server: {}\r\n\r\n", server.address());
42
43    server.listen();
44}