From 4601b43651600c3ea493a9d6179b615406b5a6fb Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Wed, 23 Mar 2022 10:43:14 +0100 Subject: [PATCH 1/3] Remove unnecessary specialized send-request method from HttpClient --- crates/matrix-sdk/src/client/mod.rs | 2 +- crates/matrix-sdk/src/http_client.rs | 15 ++------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/crates/matrix-sdk/src/client/mod.rs b/crates/matrix-sdk/src/client/mod.rs index a301b48ab..7bd2f9197 100644 --- a/crates/matrix-sdk/src/client/mod.rs +++ b/crates/matrix-sdk/src/client/mod.rs @@ -1424,7 +1424,7 @@ impl Client { Ok(self .inner .http_client - .upload(request, Some(request_config), self.inner.server_versions.clone()) + .send(request, Some(request_config), self.inner.server_versions.clone()) .await?) } diff --git a/crates/matrix-sdk/src/http_client.rs b/crates/matrix-sdk/src/http_client.rs index fab834bed..1ea16588e 100644 --- a/crates/matrix-sdk/src/http_client.rs +++ b/crates/matrix-sdk/src/http_client.rs @@ -19,8 +19,8 @@ use http::Response as HttpResponse; use matrix_sdk_common::{async_trait, locks::RwLock, AsyncTraitDeps}; use reqwest::{Client, Response}; use ruma::api::{ - client::media::create_content, error::FromHttpResponseError, AuthScheme, IncomingResponse, - MatrixVersion, OutgoingRequest, OutgoingRequestAppserviceExt, SendAccessToken, + error::FromHttpResponseError, AuthScheme, IncomingResponse, MatrixVersion, OutgoingRequest, + OutgoingRequestAppserviceExt, SendAccessToken, }; use tracing::trace; use url::Url; @@ -176,17 +176,6 @@ impl HttpClient { self.inner.send_request(request, config).await } - pub async fn upload( - &self, - request: create_content::v3::Request<'_>, - config: Option, - server_versions: Arc<[MatrixVersion]>, - ) -> Result { - let response = - self.send_request(request, self.session.clone(), config, server_versions).await?; - Ok(create_content::v3::Response::try_from_http_response(response)?) - } - pub async fn send( &self, request: Request, From 92a532a4ba1a87844371fba6aacb11c8d8a0867a Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Wed, 23 Mar 2022 10:50:15 +0100 Subject: [PATCH 2/3] Inline single-use method HttpClient::send_request --- crates/matrix-sdk/src/http_client.rs | 34 ++++++++-------------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/crates/matrix-sdk/src/http_client.rs b/crates/matrix-sdk/src/http_client.rs index 1ea16588e..0f04ba53e 100644 --- a/crates/matrix-sdk/src/http_client.rs +++ b/crates/matrix-sdk/src/http_client.rs @@ -108,17 +108,17 @@ impl HttpClient { HttpClient { inner, homeserver, session, request_config } } - #[tracing::instrument( - skip(self, request, session), - fields(request_type = type_name::()) - )] - async fn send_request( + #[tracing::instrument(skip(self, request), fields(request_type = type_name::()))] + pub async fn send( &self, request: Request, - session: Arc>>, config: Option, server_versions: Arc<[MatrixVersion]>, - ) -> Result, HttpError> { + ) -> Result + where + Request: OutgoingRequest + Debug, + HttpError: From>, + { let config = match config { Some(config) => config, None => self.request_config, @@ -137,7 +137,7 @@ impl HttpClient { // isn't going to be used anyways. SendAccessToken::None } else { - match session.read().await.as_ref() { + match self.session.read().await.as_ref() { Some(session) => { access_token = session.access_token.clone(); if config.force_auth { @@ -157,7 +157,7 @@ impl HttpClient { )? } else { let (send_access_token, user_id) = { - let session = session.read().await; + let session = self.session.read().await; let session = session.as_ref().ok_or(HttpError::UserIdRequired)?; access_token = session.access_token.clone(); @@ -173,21 +173,7 @@ impl HttpClient { }; let request = request.map(|body| body.freeze()); - self.inner.send_request(request, config).await - } - - pub async fn send( - &self, - request: Request, - config: Option, - server_versions: Arc<[MatrixVersion]>, - ) -> Result - where - Request: OutgoingRequest + Debug, - HttpError: From>, - { - let response = - self.send_request(request, self.session.clone(), config, server_versions).await?; + let response = self.inner.send_request(request, config).await?; trace!("Got response: {:?}", response); From cbebf8c4fe2cfe41d2b25e78770ba70c2175da30 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Wed, 23 Mar 2022 10:53:49 +0100 Subject: [PATCH 3/3] Don't import reqwest::Client MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … to avoid confusion with the SDKs Client type. --- crates/matrix-sdk/src/http_client.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/matrix-sdk/src/http_client.rs b/crates/matrix-sdk/src/http_client.rs index 0f04ba53e..ad3401fd5 100644 --- a/crates/matrix-sdk/src/http_client.rs +++ b/crates/matrix-sdk/src/http_client.rs @@ -17,7 +17,7 @@ use std::{any::type_name, convert::TryFrom, fmt::Debug, sync::Arc, time::Duratio use bytes::{Bytes, BytesMut}; use http::Response as HttpResponse; use matrix_sdk_common::{async_trait, locks::RwLock, AsyncTraitDeps}; -use reqwest::{Client, Response}; +use reqwest::Response; use ruma::api::{ error::FromHttpResponseError, AuthScheme, IncomingResponse, MatrixVersion, OutgoingRequest, OutgoingRequestAppserviceExt, SendAccessToken, @@ -213,7 +213,7 @@ impl Default for HttpSettings { impl HttpSettings { /// Build a client with the specified configuration. - pub(crate) fn make_client(&self) -> Result { + pub(crate) fn make_client(&self) -> Result { #[allow(unused_mut)] let mut http_client = reqwest::Client::builder(); @@ -258,7 +258,7 @@ async fn response_to_http_response( #[cfg(any(target_arch = "wasm32"))] async fn send_request( - client: &Client, + client: &reqwest::Client, request: http::Request, _: RequestConfig, ) -> Result, HttpError> { @@ -270,7 +270,7 @@ async fn send_request( #[cfg(all(not(target_arch = "wasm32")))] async fn send_request( - client: &Client, + client: &reqwest::Client, request: http::Request, config: RequestConfig, ) -> Result, HttpError> { @@ -333,7 +333,7 @@ async fn send_request( #[cfg_attr(target_arch = "wasm32", async_trait(?Send))] #[cfg_attr(not(target_arch = "wasm32"), async_trait)] -impl HttpSend for Client { +impl HttpSend for reqwest::Client { async fn send_request( &self, request: http::Request,