[][src]Trait bdrck::http::client::AbstractClient

pub trait AbstractClient {
    fn execute(&self, request: Request) -> Result<(ResponseMetadata, Vec<u8>)>;
fn get(&self, url: Url) -> RequestBuilder;
fn post(&self, url: Url) -> RequestBuilder;
fn put(&self, url: Url) -> RequestBuilder;
fn patch(&self, url: Url) -> RequestBuilder;
fn delete(&self, url: Url) -> RequestBuilder;
fn head(&self, url: Url) -> RequestBuilder; fn sleep(&self, sleep: fn(_: Duration), duration: Duration) { ... }
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>)> { ... }
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>)> { ... } }

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.

Loading content...

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>)>

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-based request Bodies.

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>)>

This is the same as execute_with_retries, but you can specify a custom sleep function (as opposed to std::thread::sleep).

Loading content...

Implementors

impl AbstractClient for Client[src]

impl AbstractClient for TestStubClient[src]

Loading content...