atrium_oauth/http_client/
default.rs

1use atrium_xrpc::HttpClient;
2use reqwest::Client;
3
4pub struct DefaultHttpClient {
5    client: Client,
6}
7
8impl HttpClient for DefaultHttpClient {
9    async fn send_http(
10        &self,
11        request: atrium_xrpc::http::Request<Vec<u8>>,
12    ) -> core::result::Result<
13        atrium_xrpc::http::Response<Vec<u8>>,
14        Box<dyn std::error::Error + Send + Sync + 'static>,
15    > {
16        let response = self.client.execute(request.try_into()?).await?;
17        let mut builder = atrium_xrpc::http::Response::builder().status(response.status());
18        for (k, v) in response.headers() {
19            builder = builder.header(k, v);
20        }
21        builder.body(response.bytes().await?.to_vec()).map_err(Into::into)
22    }
23}
24
25impl Default for DefaultHttpClient {
26    fn default() -> Self {
27        Self { client: reqwest::Client::new() }
28    }
29}