chiark / gitweb /
Fold the send() into Client::api_request.
authorSimon Tatham <anakin@pobox.com>
Thu, 4 Jan 2024 09:08:46 +0000 (09:08 +0000)
committerSimon Tatham <anakin@pobox.com>
Thu, 4 Jan 2024 12:03:24 +0000 (12:03 +0000)
One fewer line of faff at every call site. Plus, now I can centralise
logging usefully.

src/client.rs

index 61286711092517c5c5e6e4044c5a73454533c795..2a1b1d449d5c396435dacc29af5dd239c01c870d 100644 (file)
@@ -293,9 +293,11 @@ impl Client {
     }
 
     fn api_request(&self, req: Req) ->
-        Result<(String, reqwest::blocking::RequestBuilder), ClientError>
+        Result<(String, reqwest::blocking::Response), ClientError>
     {
-        self.api_request_cl(&self.client, req)
+        let (url, req) = self.api_request_cl(&self.client, req)?;
+        let rsp = req.send()?;
+        Ok((url, rsp))
     }
 
     pub fn instance(&mut self) -> Result<Instance, ClientError> {
@@ -303,8 +305,7 @@ impl Client {
             return Ok(inst.clone());
         }
 
-        let (url, req) = self.api_request(Req::get("v2/instance"))?;
-        let rsp = req.send()?;
+        let (url, rsp) = self.api_request(Req::get("v2/instance"))?;
         let rspstatus = rsp.status();
         let inst: Instance = if !rspstatus.is_success() {
             Err(ClientError::UrlError(url.clone(), rspstatus.to_string()))
@@ -344,9 +345,8 @@ impl Client {
             return Ok(st.clone());
         }
 
-        let (url, req) = self.api_request(Req::get(
+        let (url, rsp) = self.api_request(Req::get(
             &("v1/accounts/".to_owned() + id)))?;
-        let rsp = req.send()?;
         let rspstatus = rsp.status();
         let ac: Account = if !rspstatus.is_success() {
             Err(ClientError::UrlError(url.clone(), rspstatus.to_string()))
@@ -369,9 +369,8 @@ impl Client {
     pub fn account_relationship_by_id(&mut self, id: &str) ->
         Result<Relationship, ClientError>
     {
-        let (url, req) = self.api_request(
+        let (url, rsp) = self.api_request(
             Req::get("v1/accounts/relationships").param("id", id))?;
-        let rsp = req.send()?;
         let rspstatus = rsp.status();
         let rels: Vec<Relationship> = if !rspstatus.is_success() {
             Err(ClientError::UrlError(url.clone(), rspstatus.to_string()))
@@ -403,9 +402,8 @@ impl Client {
             return Ok(st);
         }
 
-        let (url, req) = self.api_request(Req::get(
+        let (url, rsp) = self.api_request(Req::get(
             &("v1/statuses/".to_owned() + id)))?;
-        let rsp = req.send()?;
         let rspstatus = rsp.status();
         let st: Status = if !rspstatus.is_success() {
             Err(ClientError::UrlError(url.clone(), rspstatus.to_string()))
@@ -448,9 +446,8 @@ impl Client {
             return Ok(not);
         }
 
-        let (url, req) = self.api_request(Req::get(
+        let (url, rsp) = self.api_request(Req::get(
             &("v1/notifications/".to_owned() + id)))?;
-        let rsp = req.send()?;
         let rspstatus = rsp.status();
         let not: Notification = if !rspstatus.is_success() {
             Err(ClientError::UrlError(url.clone(), rspstatus.to_string()))
@@ -555,8 +552,7 @@ impl Client {
             } else { req },
         };
 
-        let (url, req) = self.api_request(req)?;
-        let rsp = req.send()?;
+        let (url, rsp) = self.api_request(req)?;
         let rspstatus = rsp.status();
         if !rspstatus.is_success() {
             return Err(ClientError::UrlError(
@@ -828,9 +824,8 @@ impl Client {
     pub fn account_by_name(&mut self, name: &str) ->
         Result<Account, ClientError>
     {
-        let (url, req) = self.api_request(
+        let (url, rsp) = self.api_request(
             Req::get("v1/accounts/lookup").param("acct", name))?;
-        let rsp = req.send()?;
         let rspstatus = rsp.status();
         let ac: Account = if !rspstatus.is_success() {
             Err(ClientError::UrlError(url.clone(), rspstatus.to_string()))
@@ -863,8 +858,7 @@ impl Client {
                 .param("in_reply_to_id", id),
         };
 
-        let (url, req) = self.api_request(req)?;
-        let rsp = req.send()?;
+        let (url, rsp) = self.api_request(req)?;
         let rspstatus = rsp.status();
         if !rspstatus.is_success() {
             Err(ClientError::UrlError(url.clone(), rspstatus.to_string()))
@@ -876,9 +870,8 @@ impl Client {
     pub fn fave_boost_post(&mut self, id: &str, verb: &str)
                           -> Result<(), ClientError>
     {
-        let (url, req) = self.api_request(Req::post(
+        let (url, rsp) = self.api_request(Req::post(
             &format!("v1/statuses/{id}/{verb}")))?;
-        let rsp = req.send()?;
         let rspstatus = rsp.status();
         // Cache the returned status so as to update its faved/boosted flags
         let st: Status = if !rspstatus.is_success() {
@@ -911,9 +904,8 @@ impl Client {
 
     pub fn status_context(&mut self, id: &str) -> Result<Context, ClientError>
     {
-        let (url, req) = self.api_request(Req::get(
+        let (url, rsp) = self.api_request(Req::get(
             &format!("v1/statuses/{id}/context")))?;
-        let rsp = req.send()?;
         let rspstatus = rsp.status();
         let ctx: Context = if !rspstatus.is_success() {
             Err(ClientError::UrlError(url.clone(), rspstatus.to_string()))