1use http_request_derive::HttpRequest;
7use http_request_derive_client_reqwest::{ReqwestClient, ReqwestClientError};
8use url::Url;
9
10use crate::{AuthenticatedClient, Authorization, IsAuthenticated};
11
12#[derive(Debug, Clone)]
13pub struct Client {
14 inner: ReqwestClient,
15}
16
17impl Client {
18 pub fn new(base_url: Url) -> Self {
19 let inner = ReqwestClient::new(base_url);
20 Self { inner }
21 }
22
23 pub fn into_authenticated<A: Authorization + Sync>(
24 self,
25 authorization: A,
26 ) -> AuthenticatedClient<Self, A> {
27 AuthenticatedClient::new(self, authorization)
28 }
29}
30
31impl IsAuthenticated for Client {
32 fn is_authenticated(&self) -> bool {
33 false
34 }
35}
36
37#[async_trait::async_trait(?Send)]
38impl http_request_derive_client::Client for Client {
39 type ClientError = ReqwestClientError;
40
41 async fn execute<R: HttpRequest + Send>(
42 &self,
43 request: R,
44 ) -> Result<R::Response, Self::ClientError> {
45 self.inner.execute(request).await
46 }
47}