From 2b124d98bce5d6fe1c2475d80c548649430bb3e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Wed, 29 Jul 2020 13:50:01 +0200 Subject: [PATCH] matrix-sdk: Pass the rwlock to the http client when doing requests. --- matrix_sdk/src/client.rs | 4 ++-- matrix_sdk/src/http_client.rs | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/matrix_sdk/src/client.rs b/matrix_sdk/src/client.rs index 499ba845..9ddf3f07 100644 --- a/matrix_sdk/src/client.rs +++ b/matrix_sdk/src/client.rs @@ -1095,7 +1095,7 @@ impl Client { request: Request, ) -> Result { self.http_client - .send(request, self.base_client.session().read().await.as_ref()) + .send(request, self.base_client.session().clone()) .await } @@ -1137,7 +1137,7 @@ impl Client { request: Request, ) -> Result { self.http_client - .send_uiaa(request, self.base_client.session().read().await.as_ref()) + .send_uiaa(request, self.base_client.session().clone()) .await } diff --git a/matrix_sdk/src/http_client.rs b/matrix_sdk/src/http_client.rs index deb97ac9..aa7a68f0 100644 --- a/matrix_sdk/src/http_client.rs +++ b/matrix_sdk/src/http_client.rs @@ -20,6 +20,8 @@ use reqwest::{header::AUTHORIZATION, Client, Response}; use tracing::trace; use url::Url; +use matrix_sdk_common::locks::RwLock; + use crate::{api::r0::uiaa::UiaaResponse, Endpoint, Error, Result, Session}; #[derive(Clone, Debug)] @@ -34,7 +36,7 @@ impl HttpClient { requires_auth: bool, method: HttpMethod, request: http::Request>, - session: Option<&Session>, + session: Arc>>, ) -> Result { let url = request.uri(); let path_and_query = url.path_and_query().unwrap(); @@ -70,7 +72,7 @@ impl HttpClient { }; let request_builder = if requires_auth { - if let Some(session) = session { + if let Some(session) = session.read().await.as_ref() { let header_value = format!("Bearer {}", &session.access_token); request_builder.header(AUTHORIZATION, header_value) } else { @@ -103,7 +105,7 @@ impl HttpClient { pub async fn send + std::fmt::Debug>( &self, request: Request, - session: Option<&Session>, + session: Arc>>, ) -> Result { let request: http::Request> = request.try_into()?; let response = self @@ -125,7 +127,7 @@ impl HttpClient { pub async fn send_uiaa + std::fmt::Debug>( &self, request: Request, - session: Option<&Session>, + session: Arc>>, ) -> Result { let request: http::Request> = request.try_into()?; let response = self