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}