Trait unleash_api_client::http::HttpClient

source ·
pub trait HttpClient: Sync + Send {
    type HeaderName: Clone + Sync + Send;
    type Error: Debug + Display + Error + Send + Sync + 'static;
    type RequestBuilder;

    // Required methods
    fn build_header(name: &'static str) -> Result<Self::HeaderName, Self::Error>;
    fn get(&self, uri: &str) -> Self::RequestBuilder;
    fn post(&self, uri: &str) -> Self::RequestBuilder;
    fn header(
        builder: Self::RequestBuilder,
        key: &Self::HeaderName,
        value: &str
    ) -> Self::RequestBuilder;
    fn get_json<'async_trait, T>(
        req: Self::RequestBuilder
    ) -> Pin<Box<dyn Future<Output = Result<T, Self::Error>> + Send + 'async_trait>>
       where T: 'async_trait + DeserializeOwned,
             Self: 'async_trait;
    fn post_json<'life0, 'async_trait, T>(
        req: Self::RequestBuilder,
        content: &'life0 T
    ) -> Pin<Box<dyn Future<Output = Result<bool, Self::Error>> + Send + 'async_trait>>
       where T: 'async_trait + Serialize + Sync,
             Self: 'async_trait,
             'life0: 'async_trait;
}
Expand description

Abstraction over the concrete HTTP client being used. Implement this on any type to use it as an HTTP client.

Required Associated Types§

Required Methods§

source

fn build_header(name: &'static str) -> Result<Self::HeaderName, Self::Error>

Construct a HTTP client layer headername

source

fn get(&self, uri: &str) -> Self::RequestBuilder

Make a get request

source

fn post(&self, uri: &str) -> Self::RequestBuilder

Make a post request

source

fn header( builder: Self::RequestBuilder, key: &Self::HeaderName, value: &str ) -> Self::RequestBuilder

Add a header to a request

source

fn get_json<'async_trait, T>( req: Self::RequestBuilder ) -> Pin<Box<dyn Future<Output = Result<T, Self::Error>> + Send + 'async_trait>>
where T: 'async_trait + DeserializeOwned, Self: 'async_trait,

Make a get request and parse into JSON

source

fn post_json<'life0, 'async_trait, T>( req: Self::RequestBuilder, content: &'life0 T ) -> Pin<Box<dyn Future<Output = Result<bool, Self::Error>> + Send + 'async_trait>>
where T: 'async_trait + Serialize + Sync, Self: 'async_trait, 'life0: 'async_trait,

Encode content into JSON and post to an endpoint. Returns the statuscode is_success() value.

Object Safety§

This trait is not object safe.

Implementors§