From 9e1badf984913c4169f4c37f996493df16028ba6 Mon Sep 17 00:00:00 2001 From: Jack Dockerty Date: Wed, 7 Aug 2024 16:50:42 +0100 Subject: [PATCH] feat: add bearer token to header requests --- core/src/services/gcs/core.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core/src/services/gcs/core.rs b/core/src/services/gcs/core.rs index 0b9e8ae84c9..28a603a62aa 100644 --- a/core/src/services/gcs/core.rs +++ b/core/src/services/gcs/core.rs @@ -24,6 +24,7 @@ use std::time::Duration; use backon::ExponentialBuilder; use backon::Retryable; use bytes::Bytes; +use http::header; use http::header::CONTENT_LENGTH; use http::header::CONTENT_TYPE; use http::header::HOST; @@ -53,6 +54,7 @@ pub struct GcsCore { pub client: HttpClient, pub signer: GoogleSigner, pub token_loader: GoogleTokenLoader, + pub token: String, pub credential_loader: GoogleCredentialLoader, pub predefined_acl: Option, @@ -117,6 +119,12 @@ impl GcsCore { } let cred = self.load_token().await?; + if !self.token.is_empty() { + let header_value = format!("Bearer {}", self.token); + req.headers_mut() + .insert(header::AUTHORIZATION, header_value.parse().unwrap()); + } + self.signer .sign(req, &cred) .map_err(new_request_sign_error)?; @@ -141,6 +149,12 @@ impl GcsCore { return Ok(()); } + if !self.token.is_empty() { + let header_value = format!("Bearer {}", self.token); + req.headers_mut() + .insert(header::AUTHORIZATION, header_value.parse().unwrap()); + } + // Always remove host header, let users' client to set it based on HTTP // version. //