chiark / gitweb /
tests: wip parse, make it an extension trait
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 25 Feb 2021 00:52:39 +0000 (00:52 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 25 Feb 2021 00:52:39 +0000 (00:52 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
apitest/at-otter.rs

index 3309bd8bf0772bbb07581e4203592136e9dc95a1..cf536c30f30ecf3e0e4062498aa8ddd03ff3ace2 100644 (file)
@@ -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<reqwest::blocking::Response, AE>;
+
+    #[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);