return json error when malformed query
This commit is contained in:
parent
82e9c6b9f4
commit
fd85acaec2
17
src/main.rs
17
src/main.rs
|
@ -58,10 +58,10 @@ async fn index() -> impl Responder {
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)]
|
#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
struct MenuQuery {
|
struct MenuQuery {
|
||||||
#[serde(rename = "d")]
|
#[serde(rename = "d")]
|
||||||
days_ahead: Option<u32>,
|
days_ahead: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/menu/{canteen}")]
|
#[get("/menu/{canteen}")]
|
||||||
|
@ -77,12 +77,21 @@ async fn menu_today(
|
||||||
.collect_vec();
|
.collect_vec();
|
||||||
if canteens.iter().all(Result::is_ok) {
|
if canteens.iter().all(Result::is_ok) {
|
||||||
let canteens = canteens.into_iter().filter_map(Result::ok).collect_vec();
|
let canteens = canteens.into_iter().filter_map(Result::ok).collect_vec();
|
||||||
let days_ahead = query.days_ahead.unwrap_or(0);
|
let days_ahead = query
|
||||||
let date = (Utc::now() + CDuration::days(days_ahead as i64)).date_naive();
|
.days_ahead
|
||||||
|
.as_ref()
|
||||||
|
.map_or(Ok(0), |d| d.parse::<i64>());
|
||||||
|
|
||||||
|
if let Ok(days_ahead) = days_ahead {
|
||||||
|
let date = (Utc::now() + CDuration::days(days_ahead)).date_naive();
|
||||||
let menu = cache.get_combined(&canteens, date).await;
|
let menu = cache.get_combined(&canteens, date).await;
|
||||||
|
|
||||||
HttpResponse::Ok().json(menu)
|
HttpResponse::Ok().json(menu)
|
||||||
|
} else {
|
||||||
|
HttpResponse::BadRequest().json(json!({
|
||||||
|
"error": "Invalid days query"
|
||||||
|
}))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
HttpResponse::BadRequest().json(json!({
|
HttpResponse::BadRequest().json(json!({
|
||||||
"error": "Invalid canteen identifier",
|
"error": "Invalid canteen identifier",
|
||||||
|
|
Loading…
Reference in New Issue