diff --git a/src/main.rs b/src/main.rs index ae48b02c656a8d233e23d51bc305ee4b1fcba1e9..6c8d373a59b6b508c7a44e164562681de026a7d1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use rocket::{get, launch, post, routes, serde::json::Json}; +use rocket::{get, http::uri::Host, launch, post, routes, serde::json::Json}; const INDEX_TEXT: &str = r#"\ Cette application permet d'executer des calculs simple. @@ -24,17 +24,25 @@ Exemple: "resultat": 7, } +Les opérations possibles sont: + +- "Plus" +- "Moins" +- "Fois" +- "Diviser" + Pour envoyer une requête avec curl: -curl -X POST http://monurl -H 'Content-Type: application/json' -d '{"Plus", [3, 4]}' +curl -X POST http://<host> -H 'Content-Type: application/json' -d '{"Plus": [3, 4]}' "#; mod operations; use operations::{Operation, OperationResult}; #[get("/")] -fn index() -> &'static str { - INDEX_TEXT +fn index(host: &Host) -> String { + println!("{host}"); + INDEX_TEXT.replace("<host>", &host.to_string()) } #[post("/", data = "<operation>")] @@ -44,29 +52,34 @@ fn do_calc(operation: Json<Operation>) -> Json<OperationResult> { #[get("/test")] fn test() -> Json<Operation> { - let t = Operation::Plus(1, 3); + let t = Operation::Plus(1, 3); t.into() } #[launch] fn launch() -> _ { - rocket::build().mount("/", routes![index, do_calc, test]) + let figment = rocket::Config::figment().merge(("address", "0.0.0.0")); + + rocket::custom(figment).mount("/", routes![index, do_calc, test]) } #[cfg(test)] mod tests { - use rocket::local::blocking::Client; + use super::*; use rocket::http::Status; + use rocket::local::blocking::Client; use rocket::uri; - use super::*; - fn build_response<'r>(operation: Operation) -> (Status, OperationResult) { + fn build_response<'r>(operation: Operation) -> (Status, OperationResult) { let client = Client::tracked(launch()).expect("valid rocket instance"); let req = client.post(uri!(super::index)).json(&operation); let response = req.dispatch(); - (response.status(), response.into_json::<OperationResult>().unwrap()) + ( + response.status(), + response.into_json::<OperationResult>().unwrap(), + ) } - + #[test] fn index() { let client = Client::tracked(launch()).expect("valid rocket instance"); @@ -82,7 +95,7 @@ mod tests { assert_eq!(status, Status::Ok); let expected = OperationResult::new("3 + 8", 11); - assert_eq!(response, expected); + assert_eq!(response, expected); } #[test] @@ -91,7 +104,7 @@ mod tests { assert_eq!(status, Status::Ok); let expected = OperationResult::new("10 - 20", -10); - assert_eq!(response, expected); + assert_eq!(response, expected); } #[test] @@ -100,7 +113,7 @@ mod tests { assert_eq!(status, Status::Ok); let expected = OperationResult::new("10 x 20", 200); - assert_eq!(response, expected); + assert_eq!(response, expected); } #[test] @@ -109,7 +122,6 @@ mod tests { assert_eq!(status, Status::Ok); let expected = OperationResult::new("10 / 20", 0); - assert_eq!(response, expected); + assert_eq!(response, expected); } - }