use unhtml::FromHtml;
use unhtml_derive::FromHtml;
use crate::context::Context;
use crate::probe::Probe;
#[derive(Debug, FromHtml)]
#[html(selector = ".error-box")]
struct Error {
#[html(selector = "h2", attr = "inner")]
message: String,
}
// https://gulasidorna.eniro.se/hitta:{}
pub struct Eniro;
impl Probe for Eniro {
fn search(&mut self, ctx: &mut Context, number: &str) {
let body = if let Some(cache) = ctx.cache_get("eniro", &number) {
String::from_utf8(cache.data).unwrap()
} else {
reqwest::get(&format!("https://gulasidorna.eniro.se/hitta:{}", number))
.unwrap()
.text()
.unwrap()
};
ctx.cache_set("eniro", &number, body.as_bytes())
.expect("wut?! why not?!");
println!("eniro.se:");
if let Ok(error) = Error::from_html(&body) {
println!(" {}", error.message);
} else {
println!(" Failed to find any data");
}
}
}