From 4032800d641660cc49b5582df5acacb780a23100 Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Fri, 12 Mar 2021 00:16:48 +0100 Subject: [PATCH] Finished first version of search_streets --- Cargo.lock | 33 --------------------------------- Cargo.toml | 1 - src/ivago/controller/mod.rs | 15 ++++++++------- src/ivago/controller/structs.rs | 16 ++++++++++++++-- src/ivago/mod.rs | 7 +------ 5 files changed, 23 insertions(+), 49 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 360817d..c5fba0c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -134,19 +134,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "libc", - "num-integer", - "num-traits", - "time", - "winapi", -] - [[package]] name = "cipher" version = "0.2.5" @@ -632,25 +619,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg", -] - [[package]] name = "num_cpus" version = "1.13.0" @@ -915,7 +883,6 @@ dependencies = [ name = "rust-api" version = "0.1.0" dependencies = [ - "chrono", "reqwest", "rocket", ] diff --git a/Cargo.toml b/Cargo.toml index ad014f6..392e3ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,6 @@ edition = "2018" [dependencies] rocket = "0.4.7" -chrono = "0.4.19" [dependencies.reqwest] version = "0.11.2" diff --git a/src/ivago/controller/mod.rs b/src/ivago/controller/mod.rs index 573f426..29744be 100644 --- a/src/ivago/controller/mod.rs +++ b/src/ivago/controller/mod.rs @@ -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, Error> { )), }; - let output: Vec = Vec::new(); + let mut output: Vec = 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) diff --git a/src/ivago/controller/structs.rs b/src/ivago/controller/structs.rs index bfc3577..042e50e 100644 --- a/src/ivago/controller/structs.rs +++ b/src/ivago/controller/structs.rs @@ -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 for Street { +impl TryFrom<&String> for Street { + type Error = (); + fn try_from(value: &String) -> Result { + 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(()) + } + } } diff --git a/src/ivago/mod.rs b/src/ivago/mod.rs index da9f9de..ff7be9b 100644 --- a/src/ivago/mod.rs +++ b/src/ivago/mod.rs @@ -10,13 +10,8 @@ pub fn routes() -> Vec { } // URL: https://www.ivago.be/nl/particulier/autocomplete/garbage/streets?q=Lange -#[get("/search?")] +#[get("/search?", 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()