From bddd41dde8ccd8b5149aeb561414dd15a15de94f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20BERTHO?= Date: Sun, 24 May 2020 09:27:45 +0200 Subject: [PATCH] Rename parser --- TODO.md | 4 +++- src/parser.rs | 6 +++--- src/parser/darty.rs | 4 ++-- src/price_checker.rs | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/TODO.md b/TODO.md index 632d9f7..84ef52f 100644 --- a/TODO.md +++ b/TODO.md @@ -3,8 +3,10 @@ * [ ] Récupération prix darty avec [scraper](https://crates.io/crates/scraper) et [reqwest](https://crates.io/crates/reqwest) * [ ] Ajout du support de la Fnac, … * [ ] Récupération URL ligne de commande avec [clap](https://crates.io/crates/clap) +* [ ] Ajout de SearchParser pour recherché un article sur tous les parseurs +* [ ] Ajout des pays avec [celes](https://crates.io/crates/celes) : recherche uniquement sur les parser du pays et parseur multi pays (amazon) * [ ] Lecture des URLs depuis un fichier avec [toml](https://crates.io/crates/toml) -* [ ] Parallélisation des requêtes avce [rayon](rayon) +* [ ] Parallélisation des requêtes avce [rayon](rayon) ou reqwest asynchrone * [ ] Écriture dans un fichier ODS avec [calamine](https://crates.io/crates/calamine) * [ ] Notification si baisse de prix avec [notify-rust](https://crates.io/crates/notify-rust) * [ ] Mail si baisse de prix avec [lettre](https://crates.io/crates/lettre) diff --git a/src/parser.rs b/src/parser.rs index 76a8232..f1f4ff6 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -8,16 +8,16 @@ use crate::price_result::PriceResult; use arraygen::Arraygen; use url::Url; -pub trait Parser{ +pub trait PriceParser{ fn new() -> Self where Self :Sized; fn can_parse(&self, url : &Url) -> bool; fn parse(&self, html : &Html) -> PriceResult; } #[derive(Arraygen, Debug)] -#[gen_array(pub fn get: & dyn Parser)] +#[gen_array(pub fn get_price: & dyn PriceParser)] pub struct List { - #[in_array(get)] + #[in_array(get_price)] darty: darty::Darty } diff --git a/src/parser/darty.rs b/src/parser/darty.rs index 02c647a..59a550e 100644 --- a/src/parser/darty.rs +++ b/src/parser/darty.rs @@ -1,4 +1,4 @@ -use super::Parser; +use super::PriceParser; use crate::PriceResult; use scraper::{Selector, Html}; use url::Url; @@ -10,7 +10,7 @@ pub struct Darty { product_selector: Selector } -impl Parser for Darty { +impl PriceParser for Darty { fn new() -> Self { Darty { price_selector: Selector::parse(r#".darty_prix"#).unwrap(), diff --git a/src/price_checker.rs b/src/price_checker.rs index a302897..1a8b0d1 100644 --- a/src/price_checker.rs +++ b/src/price_checker.rs @@ -27,7 +27,7 @@ impl PriceChecker { let response = self.client.get(url.clone()).send().unwrap(); let text = response.text().unwrap(); let document = Html::parse_document(&text); - let parser = *self.parser_list.get().iter().find(|p| p.can_parse(&url)).unwrap(); + let parser = *self.parser_list.get_price().iter().find(|p| p.can_parse(&url)).unwrap(); parser.parse(&document) } } \ No newline at end of file