flyer 3.0.7

HTTP framework for rust
Documentation
use std::collections::HashSet;

use crate::{
    request::Request,
    response::Response,
    routing::next::Next,
    server::Server,
    utils::{mem::Instance, route::middleware_resolver}
};

pub struct Route<H> {
    pub(crate) server: Instance<Server>,
    pub(crate) method: String,
    pub(crate) subdomain: String,
    pub(crate) path: Vec<String>,
    pub(crate) handler: H,
    pub(crate) middlewares: HashSet<String>
}

impl <H>Route<H> {
    pub fn middleware<C, Fut>(&mut self, callback: C) -> &mut Self
    where
        C: Fn(Request, Response, Next) -> Fut + Send + Sync + 'static,
        Fut: Future<Output = Response> + Send + 'static,
    {
        middleware_resolver(
            self.server.clone(),
            Box::new(move |req, res, next| Box::pin(callback(req, res, next))),
            &mut self.middlewares
        );

        return self;
    }
}