diff --git a/src/json_routes.rs b/src/json_routes.rs index 09be191..7f2118d 100644 --- a/src/json_routes.rs +++ b/src/json_routes.rs @@ -14,6 +14,20 @@ use serde_json::{Value, json}; // Ok(contents) // } +fn return_error() -> Json { + Json(json!( + { + "title": "Error", + "cards": [ + { + "title": "An error occured", + "content": "Try reloading the page, or going back to the main page. Sorry !" + } + ] + } + )) +} + // ==================== // =====< ROUTES >===== // ==================== @@ -21,43 +35,51 @@ use serde_json::{Value, json}; pub async fn get_home(Path(lang): Path) -> Json { let raw_url = dotenv::var("RAW_URL").expect("http://localhost"); if let Ok(response) = reqwest::get(format!("{raw_url}/res/{lang}/home.json")).await { - Json(response.json().await.unwrap()) + if let Ok(result) = response.json().await { + Json(result) + } else { + return_error() + } } else { - Json( - json!({"title": "Error", "cards": [{ "title": "An error occured", "content": "Try reloading the page, or going back to the main page. Sorry !"}]}), - ) + return_error() } } pub async fn get_projects(Path(lang): Path) -> Json { let raw_url = dotenv::var("RAW_URL").expect("http://localhost"); if let Ok(response) = reqwest::get(format!("{raw_url}/res/{lang}/projects.json")).await { - Json(response.json().await.unwrap()) + if let Ok(result) = response.json().await { + Json(result) + } else { + return_error() + } } else { - Json( - json!({"title": "Error", "cards": [{ "title": "An error occured", "content": "Try reloading the page, or going back to the main page. Sorry !"}]}), - ) + return_error() } } pub async fn get_lessons(Path(lang): Path) -> Json { let raw_url = dotenv::var("RAW_URL").expect("http://localhost"); if let Ok(response) = reqwest::get(format!("{raw_url}/res/{lang}/lessons.json")).await { - Json(response.json().await.unwrap()) + if let Ok(result) = response.json().await { + Json(result) + } else { + return_error() + } } else { - Json( - json!({"title": "Error", "cards": [{ "title": "An error occured", "content": "Try reloading the page, or going back to the main page. Sorry !"}]}), - ) + return_error() } } pub async fn get_lessons_by_id(Path((lang, id)): Path<(String, String)>) -> Json { let raw_url = dotenv::var("RAW_URL").expect("http://localhost"); if let Ok(response) = reqwest::get(format!("{raw_url}/res/{lang}/lessons/{id}.json")).await { - Json(response.json().await.unwrap()) + if let Ok(result) = response.json().await { + Json(result) + } else { + return_error() + } } else { - Json( - json!({"title": "Error", "cards": [{ "title": "An error occured", "content": "Try reloading the page, or going back to the main page. Sorry !"}]}), - ) + return_error() } }