ilmen_http/http/router/structs/
route.rs

1use crate::{HTTPResponse, ResponseBuilder, Verb};
2
3use super::request_handler::RequestHandler;
4
5#[derive(PartialEq, Eq,Debug)]
6pub struct Route{
7    pub verb  : Verb,
8    pub route:  String,
9    pub method : fn(&RequestHandler) -> HTTPResponse,
10    pub need_security: bool
11}
12
13impl Route {
14    pub fn new(verb: &Verb, route: &str, method: fn(&RequestHandler) -> HTTPResponse, need_security: bool) -> Route {
15        Route {
16            verb: *verb,
17            route: route.to_string(), 
18            method,
19            need_security
20        }
21    }
22}
23
24impl Clone for Route {
25    fn clone(&self) -> Self {
26        Route { route: self.route.clone(), ..*self }
27    }
28}
29
30impl Default for Route {
31    fn default() -> Self {
32        Self { verb: Verb::GET, route: "/".to_string(), method: default_method, need_security: false }
33    }
34}
35
36fn default_method(_: &RequestHandler) -> HTTPResponse {
37    ResponseBuilder::new(200, Some("default".to_string())).build()
38}
39
40pub type Routes = Vec<Route>;