Finished first version of search_streets

This commit is contained in:
Jef Roosens 2021-03-12 00:16:48 +01:00
parent ab31a5e471
commit 4032800d64
Signed by: Jef Roosens
GPG key ID: 955C0660072F691F
5 changed files with 23 additions and 49 deletions

View file

@ -1,7 +1,9 @@
use reqwest::blocking as reqwest;
use crate::errors::Error;
use std::collections::HashMap;
use std::convert::TryFrom;
mod structs;
use structs::{Street, Date, PickupTime};
@ -37,17 +39,16 @@ pub fn search_streets(street_name: String) -> Result<Vec<Street>, Error> {
)),
};
let output: Vec<Street> = Vec::new();
let mut output: Vec<Street> = Vec::new();
// We iterate over every item and extract the needed data
for map in data.iter() {
let value = map.get("value");
let index = value.find("(");
match index {
None
if let Some(value) = map.get("value") {
match Street::try_from(value) {
Ok(street) => output.push(street),
Err(_) => continue,
}
}
let street = value[ ..index ].trim();
}
Ok(output)

View file

@ -1,4 +1,4 @@
use std::convert::From;
use std::convert::TryFrom;
/// Represents a street
@ -7,8 +7,20 @@ pub struct Street {
city: String,
}
impl From<String> for Street {
impl TryFrom<&String> for Street {
type Error = ();
fn try_from(value: &String) -> Result<Self, Self::Error> {
if let Some(index) = value.find('(') {
Ok(Street {
name: (value[0 .. index - 1].trim()).to_string(),
city: (value[index + 1 .. value.len() - 1].trim()).to_string(),
})
}else {
Err(())
}
}
}

View file

@ -10,13 +10,8 @@ pub fn routes() -> Vec<rocket::Route> {
}
// URL: https://www.ivago.be/nl/particulier/autocomplete/garbage/streets?q=Lange
#[get("/search?<street>")]
#[get("/search?<street>", format="json")]
pub fn search_streets(street: String) -> String {
// // Build the request
// let mut request = Request::get(
// "https://www.ivago.be/nl/particulier/autocomplete/garbage/streets")
// .body(())
// .unwrap();
// let response = send(request.body(()).unwrap());
"".to_string()