39 lines
1.2 KiB
Rust
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,
|
|
)?))
|
|
}
|