mirror of https://github.com/rwf2/Rocket.git
initial implementation of collision detection in routing.
This commit is contained in:
parent
da2b0ed35a
commit
2a58800b35
|
@ -17,22 +17,28 @@ fn simple() -> File {
|
||||||
File::open("/tmp/index.html").unwrap()
|
File::open("/tmp/index.html").unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
// #[route(GET, path = "/")]
|
#[route(GET, path = "/hello/")]
|
||||||
// fn simple2() -> &'static str {
|
fn simple2() -> &'static str {
|
||||||
// "Hello, world!"
|
"Hello, world!"
|
||||||
// }
|
}
|
||||||
|
|
||||||
#[route(GET, path = "/hello")]
|
#[route(GET, path = "/hello")]
|
||||||
fn simple3() -> String {
|
fn simple3() -> String {
|
||||||
String::from("Hello, world!")
|
String::from("Hello, world!")
|
||||||
}
|
}
|
||||||
|
|
||||||
// #[route(GET, path = "/<name>/<age>")]
|
#[route(GET, path = "/<name>/<age>")]
|
||||||
// fn simple4(name: &str, age: i8) -> &str {
|
fn simple4(name: &str, age: i8) -> &str {
|
||||||
// name
|
name
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
#[route(GET, path = "/something")]
|
||||||
|
fn simple5() -> &'static str {
|
||||||
|
"hi"
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let rocket = Rocket::new("localhost", 8000);
|
let mut rocket = Rocket::new("localhost", 8000);
|
||||||
rocket.mount_and_launch("/", routes![simple, simple3]);
|
rocket.mount("/", routes![simple, simple2, simple3, simple4, simple5]);
|
||||||
|
rocket.mount_and_launch("/hello/", routes![simple, simple3, simple4, simple5]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ pub mod error;
|
||||||
pub mod response;
|
pub mod response;
|
||||||
pub mod request;
|
pub mod request;
|
||||||
pub mod param;
|
pub mod param;
|
||||||
|
pub mod router;
|
||||||
|
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
|
|
||||||
|
@ -13,6 +14,7 @@ pub use error::Error;
|
||||||
pub use response::{Response, HypResponse, HypFresh, Responder};
|
pub use response::{Response, HypResponse, HypFresh, Responder};
|
||||||
pub use request::Request;
|
pub use request::Request;
|
||||||
pub use param::FromParam;
|
pub use param::FromParam;
|
||||||
|
pub use router::Router;
|
||||||
|
|
||||||
use hyper::server::Handler as HypHandler;
|
use hyper::server::Handler as HypHandler;
|
||||||
use hyper::server::Request as HypRequest;
|
use hyper::server::Request as HypRequest;
|
||||||
|
@ -33,7 +35,7 @@ pub struct Rocket {
|
||||||
address: &'static str,
|
address: &'static str,
|
||||||
port: isize,
|
port: isize,
|
||||||
handler: Option<Route<'static>>, // just for testing
|
handler: Option<Route<'static>>, // just for testing
|
||||||
paths: Vec<&'static str> // for now, to check for collisions
|
router: Router
|
||||||
// mounts: HashMap<&'static str, Route<'a>>
|
// mounts: HashMap<&'static str, Route<'a>>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +56,8 @@ impl Rocket {
|
||||||
Rocket {
|
Rocket {
|
||||||
address: address,
|
address: address,
|
||||||
port: port,
|
port: port,
|
||||||
handler: None
|
handler: None,
|
||||||
|
router: Router::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +68,9 @@ impl Rocket {
|
||||||
println!("\t* INSTALLED: {} '{}'", route.method, route.path);
|
println!("\t* INSTALLED: {} '{}'", route.method, route.path);
|
||||||
self.handler = Some((*route).clone());
|
self.handler = Some((*route).clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("\t* {} '{}'", route.method, route.path);
|
println!("\t* {} '{}'", route.method, route.path);
|
||||||
|
self.router.add_route(route.method.clone(), base, route.path);
|
||||||
}
|
}
|
||||||
|
|
||||||
self
|
self
|
||||||
|
@ -77,6 +82,10 @@ impl Rocket {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn launch(self) {
|
pub fn launch(self) {
|
||||||
|
if self.router.has_collisions() {
|
||||||
|
println!("Warning: route collisions detected!");
|
||||||
|
}
|
||||||
|
|
||||||
let full_addr = format!("{}:{}", self.address, self.port);
|
let full_addr = format!("{}:{}", self.address, self.port);
|
||||||
println!("🚀 Rocket has launched from {}...", full_addr);
|
println!("🚀 Rocket has launched from {}...", full_addr);
|
||||||
let _ = Server::http(full_addr.as_str()).unwrap().handle(self);
|
let _ = Server::http(full_addr.as_str()).unwrap().handle(self);
|
||||||
|
|
Loading…
Reference in New Issue