fej/src/bin/server/routes/ivago.rs

39 lines
1.2 KiB
Rust

use fej::ivago::{get_pickup_times, search_streets, BasicDate, PickupTime, Street};
use rocket::http::Status;
use rocket_contrib::json::Json;
/// This route handles the Ivago search endpoint. It returns a list of streets,
/// consisting of a street name & a city.
///
/// # Arguments
///
/// * `search_term` - Search term to use to look for streets
#[get("/search?<q>")]
pub fn route_search_streets(q: String) -> Result<Json<Vec<Street>>, Status> {
Ok(Json(search_streets(q.as_str())?))
}
/// Handles returning of pickup times for a specific address. It returns a list
/// of pickup times, containing a date and a description of the trash type.
///
/// # Arguments
///
/// * `street` - Street to look up
/// * `number` - House number in the given street
/// * `start_date` - Earliest date that can be returned
/// * `end_date` - Latest date that can be returned
#[get("/?<street>&<number>&<start_date>&<end_date>")]
pub fn route_get_pickup_times(
street: Street,
number: u32,
start_date: BasicDate,
end_date: BasicDate,
) -> Result<Json<Vec<PickupTime>>, Status> {
Ok(Json(get_pickup_times(
&street,
&number,
&start_date.0,
&end_date.0,
)?))
}