Finished first version of search_streets
This commit is contained in:
parent
ab31a5e471
commit
4032800d64
5 changed files with 23 additions and 49 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Reference in a new issue