use rocket::Route; use rocket::http::Method; use rocket::{Request, Data}; use rocket::route::{Handler, Outcome}; use rocket::response::Redirect; #[derive(Clone)] pub struct ProxyServer { root: String, rank: isize, } impl ProxyServer { const DEFAULT_RANK: isize = 10; pub fn new(root: String, rank: isize) -> Self { ProxyServer { root, rank, } } pub fn from(root: &str) -> Self { Self::new(String::from(root), Self::DEFAULT_RANK) } } impl Into> for ProxyServer { fn into(self) -> Vec { let mut routes: Vec = vec![]; static METHODS: [Method; 5] = [Method::Get, Method::Post, Method::Patch, Method::Delete, Method::Put]; for method in METHODS { let mut route = Route::ranked(self.rank, method, "/", self.clone()); route.name = Some(format!("ProxyServer: {} {}", method.as_str(), self.root.clone()).into()); routes.push(route); } routes } } #[rocket::async_trait] impl Handler for ProxyServer { async fn handle<'r>(&self, req: &'r Request<'_>, data: Data<'r>) -> Outcome<'r> { todo!() } }