mincat_core/
next.rs

1use crate::{handler::Handler, request::Request, response::Response};
2
3#[derive(Clone)]
4pub struct Next(Handler);
5
6impl Next {
7    pub fn new(handler: Handler) -> Self {
8        Self(handler)
9    }
10
11    pub async fn run(mut self, request: Request) -> Response {
12        if let Some(arr) = &mut self.0.middleware {
13            if let Some(middleware) = arr.pop_back() {
14                middleware.call(request, self).await
15            } else {
16                self.0.func.call(request).await
17            }
18        } else {
19            self.0.func.call(request).await
20        }
21    }
22}