fire_http/routes/
route.rs1use super::{ParamsNames, PathParams};
2
3use crate::header::Method;
4use crate::util::PinnedFuture;
5use crate::{Request, Resources, Response};
6
7use std::borrow::Cow;
8
9#[derive(Debug, Clone)]
10pub struct RoutePath {
11 pub method: Option<Method>,
12 pub path: Cow<'static, str>,
13}
14
15pub trait Route: Send + Sync {
20 fn validate_requirements(
22 &self,
23 params: &ParamsNames,
24 resources: &Resources,
25 );
26
27 fn path(&self) -> RoutePath;
29
30 fn call<'a>(
31 &'a self,
32 req: &'a mut Request,
33 params: &'a PathParams,
34 resources: &'a Resources,
35 ) -> PinnedFuture<'a, crate::Result<Response>>;
36}