use http_request_derive::HttpRequest;
use http_request_derive_client::Client as _;
use http_request_derive_client_reqwest::{ReqwestClient, ReqwestClientError};
use url::Url;
use crate::{AuthenticatedClient, Authorization};
mod requests;
#[derive(Debug, Clone)]
pub struct Client {
inner: ReqwestClient,
}
impl Client {
pub fn new(base_url: Url) -> Self {
let inner = ReqwestClient::new(base_url);
Self { inner }
}
pub async fn execute<R: HttpRequest + Send>(
&self,
request: R,
) -> Result<R::Response, ReqwestClientError> {
self.inner.execute(request).await
}
pub async fn execute_authorized<R: HttpRequest + Send, A: Authorization + Sync>(
&self,
request: R,
authorization: A,
) -> Result<R::Response, ReqwestClientError> {
let authenticated_client = AuthenticatedClient::new(self.inner.clone(), authorization);
authenticated_client.execute(request).await
}
}