1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use crate::{request::Request, response::Response};

pub type MiddlewareType = Box<dyn Fn(&Request, &Response)>;

pub struct Middleware {
    pub cb: MiddlewareType,
}

impl Middleware {
    pub fn new<F>(controller: F) -> Middleware
    where
        F: Fn(&Request, &Response) + 'static,
    {
        let box_cb = Box::new(controller);

        Middleware { cb: box_cb }
    }
}

impl Middleware {
    pub fn use_middleware(&self, request: &Request, response: &Response) {
        let fun = &self.cb;

        fun(request, response);
    }
}