Rename parser

This commit is contained in:
Rémi BERTHO 2020-05-24 09:27:45 +02:00
parent 38afb86753
commit bddd41dde8
Signed by: dalan
GPG key ID: EE3B917931C07B64
4 changed files with 9 additions and 7 deletions

View file

@ -3,8 +3,10 @@
* [ ] Récupération prix darty avec [scraper](https://crates.io/crates/scraper) et [reqwest](https://crates.io/crates/reqwest) * [ ] 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, … * [ ] Ajout du support de la Fnac, …
* [ ] Récupération URL ligne de commande avec [clap](https://crates.io/crates/clap) * [ ] 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) * [ ] 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) * [ ] É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) * [ ] 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) * [ ] Mail si baisse de prix avec [lettre](https://crates.io/crates/lettre)

View file

@ -8,16 +8,16 @@ use crate::price_result::PriceResult;
use arraygen::Arraygen; use arraygen::Arraygen;
use url::Url; use url::Url;
pub trait Parser{ pub trait PriceParser{
fn new() -> Self where Self :Sized; fn new() -> Self where Self :Sized;
fn can_parse(&self, url : &Url) -> bool; fn can_parse(&self, url : &Url) -> bool;
fn parse(&self, html : &Html) -> PriceResult; fn parse(&self, html : &Html) -> PriceResult;
} }
#[derive(Arraygen, Debug)] #[derive(Arraygen, Debug)]
#[gen_array(pub fn get: & dyn Parser)] #[gen_array(pub fn get_price: & dyn PriceParser)]
pub struct List { pub struct List {
#[in_array(get)] #[in_array(get_price)]
darty: darty::Darty darty: darty::Darty
} }

View file

@ -1,4 +1,4 @@
use super::Parser; use super::PriceParser;
use crate::PriceResult; use crate::PriceResult;
use scraper::{Selector, Html}; use scraper::{Selector, Html};
use url::Url; use url::Url;
@ -10,7 +10,7 @@ pub struct Darty {
product_selector: Selector product_selector: Selector
} }
impl Parser for Darty { impl PriceParser for Darty {
fn new() -> Self { fn new() -> Self {
Darty { Darty {
price_selector: Selector::parse(r#".darty_prix"#).unwrap(), price_selector: Selector::parse(r#".darty_prix"#).unwrap(),

View file

@ -27,7 +27,7 @@ impl PriceChecker {
let response = self.client.get(url.clone()).send().unwrap(); let response = self.client.get(url.clone()).send().unwrap();
let text = response.text().unwrap(); let text = response.text().unwrap();
let document = Html::parse_document(&text); 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) parser.parse(&document)
} }
} }