req.build(&base_url, client, self.auth.user_token.as_deref())
}
- fn api_request(
+ /// Sends and logs, but doesn't do any checking on the response
+ ///
+ /// You must call `.is_success()` (or equivalent) on the response
+ /// yourself.
+ fn api_request_raw(
&mut self,
req: Req,
) -> Result<(String, reqwest::blocking::Response), ClientError> {
Ok((urlstr, rsp))
}
+ /// Makes a request and insists it was a plain success
+ ///
+ /// Calls `.is_success()` for you.
+ fn api_request_ok(
+ &mut self,
+ req: Req,
+ ) -> Result<(String, reqwest::blocking::Response), ClientError> {
+ let (url, rsp) = self.api_request_raw(req)?;
+ let rspstatus = rsp.status();
+ if !rspstatus.is_success() {
+ return Err(ClientError::from_response(&url, rsp));
+ }
+ Ok((url, rsp))
+ }
+
/// Makes a request and deserialises the returned JSON
///
/// Insists that the response is a success.
// There's a lot of code here that doesn't depend on T, but
// the generics will monomorphise it for each T. If we cared enough
// about binary size, we could make a non-generic inner function.
- let (url, rsp) = self.api_request(req)?;
- let rspstatus = rsp.status();
- if !rspstatus.is_success() {
- return Err(ClientError::from_response(&url, rsp));
- }
+ let (url, rsp) = self.api_request_ok(req)?;
let text = rsp.text()?;
let t: T = serde_json::from_str(&text).map_err(|e0| {
let url = url.clone();
}
};
- let (url, rsp) = self.api_request(req)?;
- let rspstatus = rsp.status();
- if !rspstatus.is_success() {
- return Err(ClientError::from_response(&url, rsp));
- }
+ let (url, rsp) = self.api_request_ok(req)?;
// Keep the Link: headers after we consume the response, for
// use later once we've constructed a Feed
Some(id) => req.param("in_reply_to_id", id),
};
- let (url, rsp) = self.api_request(req)?;
- let rspstatus = rsp.status();
- if !rspstatus.is_success() {
- Err(ClientError::from_response(&url, rsp))
- } else {
- Ok(())
- }
+ self.api_request_ok(req)?;
+ Ok(())
}
pub fn fave_boost_post(
req
}
};
- let (url, rsp) = self.api_request(req)?;
- let rspstatus = rsp.status();
- if !rspstatus.is_success() {
- Err(ClientError::from_response(&url, rsp))
- } else {
- Ok(())
- }
+ self.api_request_ok(req)?;
+ Ok(())
}
pub fn set_account_flag(
Req::post(&format!("api/v1/accounts/{id}/unmute"))
}
};
- let (url, rsp) = self.api_request(req)?;
- let rspstatus = rsp.status();
- if !rspstatus.is_success() {
- Err(ClientError::from_response(&url, rsp))
- } else {
- Ok(())
- }
+ self.api_request_ok(req)?;
+ Ok(())
}
pub fn set_account_details(