You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2026/05/23 06:09:27 UTC

(opendal) branch main updated: fix(services/tos): Set user agent header (#7598)

This is an automated email from the ASF dual-hosted git repository.

Xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git


The following commit(s) were added to refs/heads/main by this push:
     new 10209181a fix(services/tos): Set user agent header (#7598)
10209181a is described below

commit 10209181a6ffa4c6d38034d8dd142022d9e9c309
Author: Xin Sun <dd...@gmail.com>
AuthorDate: Sat May 23 14:09:21 2026 +0800

    fix(services/tos): Set user agent header (#7598)
---
 core/services/tos/src/core.rs | 43 +++++++++++++++++++++++++++----------------
 1 file changed, 27 insertions(+), 16 deletions(-)

diff --git a/core/services/tos/src/core.rs b/core/services/tos/src/core.rs
index 40af6247b..ea1224cd2 100644
--- a/core/services/tos/src/core.rs
+++ b/core/services/tos/src/core.rs
@@ -23,6 +23,8 @@ use http::Response;
 use http::header::CONTENT_LENGTH;
 use http::header::CONTENT_TYPE;
 use http::header::HOST;
+use http::header::HeaderValue;
+use http::header::USER_AGENT;
 use reqsign_core::Signer;
 use reqsign_volcengine_tos::Credential;
 use reqsign_volcengine_tos::{percent_encode_path, percent_encode_query};
@@ -87,15 +89,20 @@ impl Debug for TosCore {
 
 impl TosCore {
     pub async fn send(&self, req: Request<Buffer>) -> Result<Response<Buffer>> {
-        if self.skip_signature {
-            return self.info.http_client().send(req).await;
+        let (mut parts, body) = req.into_parts();
+
+        if !self.skip_signature {
+            self.signer
+                .sign(&mut parts, None)
+                .await
+                .map_err(|e| new_request_sign_error(e.into()))?;
         }
 
-        let (mut parts, body) = req.into_parts();
-        self.signer
-            .sign(&mut parts, None)
-            .await
-            .map_err(|e| new_request_sign_error(e.into()))?;
+        parts.headers.insert(
+            USER_AGENT,
+            HeaderValue::from_str(&format!("opendal/{VERSION}"))
+                .expect("user agent must be valid header value"),
+        );
 
         let resp = self
             .info
@@ -107,18 +114,22 @@ impl TosCore {
     }
 
     pub async fn fetch(&self, req: Request<Buffer>) -> Result<Response<HttpBody>> {
-        if self.skip_signature {
-            return self.info.http_client().fetch(req).await;
-        }
-
         let (mut parts, body) = req.into_parts();
 
-        self.signer
-            .sign(&mut parts, None)
-            .await
-            .map_err(|e| new_request_sign_error(e.into()))?;
+        if !self.skip_signature {
+            self.signer
+                .sign(&mut parts, None)
+                .await
+                .map_err(|e| new_request_sign_error(e.into()))?;
 
-        parts.headers.remove(HOST);
+            parts.headers.remove(HOST);
+        }
+
+        parts.headers.insert(
+            USER_AGENT,
+            HeaderValue::from_str(&format!("opendal/{VERSION}"))
+                .expect("user agent must be valid header value"),
+        );
 
         self.info
             .http_client()