unleash_api_client/http/
shim.rs1use core::fmt::{Debug, Display};
8use std::error::Error;
9
10use async_trait::async_trait;
11use serde::{de::DeserializeOwned, Serialize};
12
13#[async_trait]
16pub trait HttpClient: Sync + Send {
17 type HeaderName: Clone + Sync + Send;
18 type Error: Debug + Display + Error + Send + Sync + 'static;
19 type RequestBuilder;
20
21 fn build_header(name: &'static str) -> Result<Self::HeaderName, Self::Error>;
23
24 fn get(&self, uri: &str) -> Self::RequestBuilder;
26
27 fn post(&self, uri: &str) -> Self::RequestBuilder;
29
30 fn header(
32 builder: Self::RequestBuilder,
33 key: &Self::HeaderName,
34 value: &str,
35 ) -> Self::RequestBuilder;
36
37 async fn get_json<T: DeserializeOwned>(req: Self::RequestBuilder) -> Result<T, Self::Error>;
39
40 async fn post_json<T: Serialize + Sync>(
43 req: Self::RequestBuilder,
44 content: &T,
45 ) -> Result<bool, Self::Error>;
46}