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§
type HeaderName: Clone + Sync + Send
type Error: Debug + Display + Error + Send + Sync + 'static
type RequestBuilder
Required Methods§
sourcefn build_header(name: &'static str) -> Result<Self::HeaderName, Self::Error>
fn build_header(name: &'static str) -> Result<Self::HeaderName, Self::Error>
Construct a HTTP client layer headername
sourcefn get(&self, uri: &str) -> Self::RequestBuilder
fn get(&self, uri: &str) -> Self::RequestBuilder
Make a get request
sourcefn post(&self, uri: &str) -> Self::RequestBuilder
fn post(&self, uri: &str) -> Self::RequestBuilder
Make a post request
sourcefn header(
builder: Self::RequestBuilder,
key: &Self::HeaderName,
value: &str
) -> Self::RequestBuilder
fn header( builder: Self::RequestBuilder, key: &Self::HeaderName, value: &str ) -> Self::RequestBuilder
Add a header to a request
sourcefn 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 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
Object Safety§
This trait is not object safe.