This is an automated email from the ASF dual-hosted git repository. xuanwo pushed a commit to branch dropbox-refresh-token in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
commit 0190062d9fb97b3425167957ee1b52b487f658c9 Author: Xuanwo <[email protected]> AuthorDate: Fri Jul 7 11:38:04 2023 +0800 Refactor Signed-off-by: Xuanwo <[email protected]> --- core/src/services/dropbox/core.rs | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/core/src/services/dropbox/core.rs b/core/src/services/dropbox/core.rs index 790d69fcd..91efc14af 100644 --- a/core/src/services/dropbox/core.rs +++ b/core/src/services/dropbox/core.rs @@ -21,7 +21,6 @@ use std::fmt::Formatter; use bytes::Bytes; use http::header; -use http::request::Builder; use http::Request; use http::Response; use serde::Deserialize; @@ -63,12 +62,13 @@ impl DropboxCore { }; let request_payload = serde_json::to_string(&download_args).map_err(new_json_serialize_error)?; - let request = self - .build_auth_header(Request::post(&url)) + let mut request = Request::post(&url) .header("Dropbox-API-Arg", request_payload) .header(header::CONTENT_LENGTH, 0) .body(AsyncBody::Empty) .map_err(new_request_build_error)?; + + self.sign(&mut request).await?; self.client.send(request).await } @@ -93,8 +93,7 @@ impl DropboxCore { content_type.unwrap_or("application/octet-stream"), ); - let request = self - .build_auth_header(request_builder) + let mut request = request_builder .header( "Dropbox-API-Arg", serde_json::to_string(&args).map_err(new_json_serialize_error)?, @@ -102,6 +101,7 @@ impl DropboxCore { .body(body) .map_err(new_request_build_error)?; + self.sign(&mut request).await?; self.client.send(request).await } @@ -113,12 +113,13 @@ impl DropboxCore { let bs = Bytes::from(serde_json::to_string(&args).map_err(new_json_serialize_error)?); - let request = self - .build_auth_header(Request::post(&url)) + let mut request = Request::post(&url) .header(header::CONTENT_TYPE, "application/json") .header(header::CONTENT_LENGTH, bs.len()) .body(AsyncBody::Bytes(bs)) .map_err(new_request_build_error)?; + + self.sign(&mut request).await?; self.client.send(request).await } @@ -130,12 +131,13 @@ impl DropboxCore { let bs = Bytes::from(serde_json::to_string(&args).map_err(new_json_serialize_error)?); - let request = self - .build_auth_header(Request::post(&url)) + let mut request = Request::post(&url) .header(header::CONTENT_TYPE, "application/json") .header(header::CONTENT_LENGTH, bs.len()) .body(AsyncBody::Bytes(bs)) .map_err(new_request_build_error)?; + + self.sign(&mut request).await?; self.client.send(request).await } @@ -148,19 +150,24 @@ impl DropboxCore { let bs = Bytes::from(serde_json::to_string(&args).map_err(new_json_serialize_error)?); - let request = self - .build_auth_header(Request::post(&url)) + let mut request = Request::post(&url) .header(header::CONTENT_TYPE, "application/json") .header(header::CONTENT_LENGTH, bs.len()) .body(AsyncBody::Bytes(bs)) .map_err(new_request_build_error)?; + + self.sign(&mut request).await?; + self.client.send(request).await } - fn build_auth_header(&self, mut req: Builder) -> Builder { - let auth_header_content = format!("Bearer {}", self.token); - req = req.header(header::AUTHORIZATION, auth_header_content); - req + pub async fn sign<T>(&self, req: &mut Request<T>) -> Result<()> { + let value = format!("Bearer {}", self.token) + .parse() + .expect("token must be valid header"); + req.headers_mut().insert(header::AUTHORIZATION, value); + + Ok(()) } }
