[−][src]Trait bdrck::http::client::AbstractClient
AbstractClient defines the generic interface for an HTTP client.
Required methods
fn execute(&self, request: Request) -> Result<(ResponseMetadata, Vec<u8>)>
Execute (send) a previously-constructed HTTP request.
fn get(&self, url: Url) -> RequestBuilder
Returns a builder for an HTTP GET request.
fn post(&self, url: Url) -> RequestBuilder
Returns a builder for an HTTP POST request.
fn put(&self, url: Url) -> RequestBuilder
Returns a builder for an HTTP PUT request.
fn patch(&self, url: Url) -> RequestBuilder
Returns a builder for an HTTP PATCH request.
fn delete(&self, url: Url) -> RequestBuilder
Returns a builder for an HTTP DELETE request.
fn head(&self, url: Url) -> RequestBuilder
Returns a builder for an HTTP HEAD request.
Provided methods
fn sleep(&self, sleep: fn(_: Duration), duration: Duration)
This function calls the given custom sleep function with the given Duration. This can be overridden by a trait implementor to add extra logic, if needed.
fn execute_with_retries(
&self,
max_retries: usize,
add_jitter: bool,
method: Method,
url: Url,
headers: Option<&HeaderMap>,
body: Option<&[u8]>
) -> Result<(ResponseMetadata, Vec<u8>)>
&self,
max_retries: usize,
add_jitter: bool,
method: Method,
url: Url,
headers: Option<&HeaderMap>,
body: Option<&[u8]>
) -> Result<(ResponseMetadata, Vec<u8>)>
Execute (send) a previously-constructed HTTP request. In the case of a retryable failure (a 5xx error), we'll retry up to max_retries with exponential backoff between each attempt.
Unfortunately, to do this we need to be able to create copies of the
request, meaning in particular the Body needs to be copyable. So, this
function can only support Vec
This function returns the response metadata (e.g. response code) and body, as well as the number of retries required (i.e., retries + 1 HTTP requests were sent by this function).
fn execute_with_retries_custom_sleep(
&self,
sleep: fn(_: Duration),
max_retries: usize,
add_jitter: bool,
method: Method,
url: Url,
headers: Option<&HeaderMap>,
body: Option<&[u8]>
) -> Result<(ResponseMetadata, Vec<u8>)>
&self,
sleep: fn(_: Duration),
max_retries: usize,
add_jitter: bool,
method: Method,
url: Url,
headers: Option<&HeaderMap>,
body: Option<&[u8]>
) -> Result<(ResponseMetadata, Vec<u8>)>
This is the same as execute_with_retries, but you can specify a custom sleep function (as opposed to std::thread::sleep).