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-reqsign.git


The following commit(s) were added to refs/heads/main by this push:
     new d87031d  chore: align default credential provider API style (#700)
d87031d is described below

commit d87031dc4a7e81583fe76d8f0f521da2930c89b1
Author: Xuanwo <[email protected]>
AuthorDate: Wed Mar 18 16:28:41 2026 +0800

    chore: align default credential provider API style (#700)
    
    ## Summary
    
    This PR aligns `DefaultCredentialProvider` /
    `DefaultCredentialProviderBuilder` API style across services using
    `aws-v4` as the baseline.
    
    ### Changes
    - Fix Oracle `DefaultCredentialProvider::default()` semantics to match
    `new()`.
    - Add Oracle regression test to ensure `default()` and `new()` stay
    equivalent.
    - Export `DefaultCredentialProviderBuilder` from Volcengine
    `provide_credential` module.
    - Export `DefaultCredentialProviderBuilder` from Google and Oracle crate
    roots.
    - Make `provide_credential` module private in Oracle and Tencent (keep
    public re-exports).
    
    ## Validation
    
    - `cargo check -p reqsign-oracle -p reqsign-volcengine-tos -p
    reqsign-google -p reqsign-tencent-cos`
    - `cargo test -p reqsign-oracle test_default_matches_new`
---
 services/google/src/lib.rs                         |  3 +-
 services/oracle/src/lib.rs                         |  6 +--
 services/oracle/src/provide_credential/default.rs  | 50 +++++++++++++++++++++-
 services/tencent-cos/src/lib.rs                    |  2 +-
 .../volcengine-tos/src/provide_credential/mod.rs   |  2 +-
 5 files changed, 56 insertions(+), 7 deletions(-)

diff --git a/services/google/src/lib.rs b/services/google/src/lib.rs
index 2b3cd06..79785bd 100644
--- a/services/google/src/lib.rs
+++ b/services/google/src/lib.rs
@@ -27,5 +27,6 @@ pub use sign_request::RequestSigner;
 
 mod provide_credential;
 pub use provide_credential::{
-    DefaultCredentialProvider, StaticCredentialProvider, 
VmMetadataCredentialProvider,
+    DefaultCredentialProvider, DefaultCredentialProviderBuilder, 
StaticCredentialProvider,
+    VmMetadataCredentialProvider,
 };
diff --git a/services/oracle/src/lib.rs b/services/oracle/src/lib.rs
index 6bbc291..4632912 100644
--- a/services/oracle/src/lib.rs
+++ b/services/oracle/src/lib.rs
@@ -30,10 +30,10 @@ pub use credential::Credential;
 mod sign_request;
 pub use sign_request::RequestSigner;
 
-pub mod provide_credential;
+mod provide_credential;
 #[allow(deprecated)]
 pub use provide_credential::ConfigCredentialProvider;
 pub use provide_credential::{
-    ConfigFileCredentialProvider, DefaultCredentialProvider, 
EnvCredentialProvider,
-    StaticCredentialProvider,
+    ConfigFileCredentialProvider, DefaultCredentialProvider, 
DefaultCredentialProviderBuilder,
+    EnvCredentialProvider, StaticCredentialProvider,
 };
diff --git a/services/oracle/src/provide_credential/default.rs 
b/services/oracle/src/provide_credential/default.rs
index 5d88d34..f29ce3e 100644
--- a/services/oracle/src/provide_credential/default.rs
+++ b/services/oracle/src/provide_credential/default.rs
@@ -24,11 +24,17 @@ use reqsign_core::{Context, ProvideCredential, 
ProvideCredentialChain, Result};
 /// This loader will try to load credentials in the following order:
 /// 1. From environment variables
 /// 2. From the default Oracle config file (~/.oci/config)
-#[derive(Debug, Default)]
+#[derive(Debug)]
 pub struct DefaultCredentialProvider {
     chain: ProvideCredentialChain<Credential>,
 }
 
+impl Default for DefaultCredentialProvider {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
 impl DefaultCredentialProvider {
     /// Create a builder to configure the default credential chain.
     pub fn builder() -> DefaultCredentialProviderBuilder {
@@ -147,3 +153,45 @@ impl ProvideCredential for DefaultCredentialProvider {
         self.chain.provide_credential(ctx).await
     }
 }
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::constants::{ORACLE_FINGERPRINT, ORACLE_KEY_FILE, 
ORACLE_TENANCY, ORACLE_USER};
+    use reqsign_core::{Context, StaticEnv};
+    use std::collections::HashMap;
+
+    #[tokio::test]
+    async fn test_default_matches_new() {
+        let ctx = Context::new().with_env(StaticEnv {
+            home_dir: None,
+            envs: HashMap::from([
+                (ORACLE_USER.to_string(), "test_user".to_string()),
+                (ORACLE_TENANCY.to_string(), "test_tenancy".to_string()),
+                (ORACLE_KEY_FILE.to_string(), "/tmp/key.pem".to_string()),
+                (
+                    ORACLE_FINGERPRINT.to_string(),
+                    "test_fingerprint".to_string(),
+                ),
+            ]),
+        });
+
+        let from_default = DefaultCredentialProvider::default()
+            .provide_credential(&ctx)
+            .await
+            .expect("load must succeed")
+            .expect("credential must exist");
+        let from_new = DefaultCredentialProvider::new()
+            .provide_credential(&ctx)
+            .await
+            .expect("load must succeed")
+            .expect("credential must exist");
+
+        assert_eq!(from_default.user, from_new.user);
+        assert_eq!(from_default.tenancy, from_new.tenancy);
+        assert_eq!(from_default.key_file, from_new.key_file);
+        assert_eq!(from_default.fingerprint, from_new.fingerprint);
+        assert!(from_default.expires_in.is_some());
+        assert!(from_new.expires_in.is_some());
+    }
+}
diff --git a/services/tencent-cos/src/lib.rs b/services/tencent-cos/src/lib.rs
index 554a417..4ac18ca 100644
--- a/services/tencent-cos/src/lib.rs
+++ b/services/tencent-cos/src/lib.rs
@@ -27,5 +27,5 @@ pub use credential::Credential;
 mod sign_request;
 pub use sign_request::RequestSigner;
 
-pub mod provide_credential;
+mod provide_credential;
 pub use provide_credential::*;
diff --git a/services/volcengine-tos/src/provide_credential/mod.rs 
b/services/volcengine-tos/src/provide_credential/mod.rs
index 4461cd3..d9313bd 100644
--- a/services/volcengine-tos/src/provide_credential/mod.rs
+++ b/services/volcengine-tos/src/provide_credential/mod.rs
@@ -19,6 +19,6 @@ mod default;
 mod env;
 mod r#static;
 
-pub use default::DefaultCredentialProvider;
+pub use default::{DefaultCredentialProvider, DefaultCredentialProviderBuilder};
 pub use env::EnvCredentialProvider;
 pub use r#static::StaticCredentialProvider;

Reply via email to