From: Ian Jackson Date: Thu, 25 Feb 2021 00:52:39 +0000 (+0000) Subject: tests: wip parse, make it an extension trait X-Git-Tag: otter-0.4.0~363 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=3f738e98b715385cad748a2a706411e766eeecb7;p=otter.git tests: wip parse, make it an extension trait Signed-off-by: Ian Jackson --- diff --git a/apitest/at-otter.rs b/apitest/at-otter.rs index 3309bd8b..cf536c30 100644 --- a/apitest/at-otter.rs +++ b/apitest/at-otter.rs @@ -53,24 +53,37 @@ mod scraper_ext { } #[throws(AE)] - pub fn parse(req: reqwest::blocking::RequestBuilder) -> Html { - let resp = req.send()?; + pub fn parse_html(resp: reqwest::blocking::Response) -> Html { ensure_eq!(resp.status(), 200); let body = resp.text()?; let dom = scraper::Html::parse_document(&body); //dbg!(&&dom); dom } + + pub trait RequestBuilderExt: Sized { + fn send(self) -> Result; + + #[throws(AE)] + fn send_parse_html(self) -> Html { + let resp = self.send()?; + parse_html(resp)? + } + } + + impl RequestBuilderExt for reqwest::blocking::RequestBuilder { + #[throws(AE)] + fn send(self) -> reqwest::blocking::Response { self.send()? } + } } -use scraper_ext::HtmlExt; +use scraper_ext::{HtmlExt, RequestBuilderExt}; impl Ctx { #[throws(AE)] fn connect_player(&self, player: &Player) -> Session { let client = reqwest::blocking::Client::new(); - let req = client.get(&player.url); - let loading = scraper_ext::parse(req)?; + let loading = client.get(&player.url).send_parse_html()?; let ptoken = loading.e_attr("#loading_token", "data-ptoken").unwrap(); dbg!(&ptoken);