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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
use super::route::Route; use super::context::Context; use super::middleware::Middleware; pub struct Group { pub routes: Vec<Route>, prefix: String, pub before: Vec<Middleware>, pub after: Vec<Middleware>, } impl Group { pub fn new(prefix: &str) -> Group { Group { routes: Vec::new(), prefix: prefix.to_owned(), before: Vec::new(), after: Vec::new(), } } fn add<H>(&mut self, method: &str, pattern: &str, handle: H) -> &mut Route where H: Fn(&mut Context) + Send + Sync + 'static { let route = Route::new( method.parse().unwrap(), self.prefix.clone() + pattern, Box::new(handle), ); self.routes.push(route); self.routes.last_mut().unwrap() } route!(get); route!(post); route!(put); route!(delete); route!(option); route!(head); middleware!(before); middleware!(after); }