atrium_oauth/http_client/
default.rs1use 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}