This is an automated email from the ASF dual-hosted git repository. tison pushed a commit to branch tidy in repository https://gitbox.apache.org/repos/asf/opendal.git
commit 98d540181af4f7174ca94e22e6326f779ddec299 Author: tison <[email protected]> AuthorDate: Thu Nov 20 20:25:51 2025 +0800 chore: random code and comments tidy Signed-off-by: tison <[email protected]> --- core/src/services/s3/config.rs | 25 ++++++++++++++++++++----- core/src/types/operator/registry.rs | 3 ++- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/core/src/services/s3/config.rs b/core/src/services/s3/config.rs index 43342e677..4ece9ab21 100644 --- a/core/src/services/s3/config.rs +++ b/core/src/services/s3/config.rs @@ -22,7 +22,8 @@ use serde::Serialize; use super::backend::S3Builder; -/// Config for Aws S3 and compatible services (including minio, digitalocean space, Tencent Cloud Object Storage(COS) and so on) support. +/// Config for Aws S3 and compatible services (including minio, digitalocean space, +/// Tencent Cloud Object Storage(COS) and so on) support. #[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)] #[serde(default)] #[non_exhaustive] @@ -109,7 +110,7 @@ pub struct S3Config { /// Disable load credential from ec2 metadata. /// /// This option is used to disable the default behavior of opendal - /// to load credential from ec2 metadata, a.k.a, IMDSv2 + /// to load credential from ec2 metadata, a.k.a., IMDSv2 pub disable_ec2_metadata: bool, /// Allow anonymous will allow opendal to send request without signing /// when credential is not loaded. @@ -202,7 +203,7 @@ pub struct S3Config { pub checksum_algorithm: Option<String>, /// Disable write with if match so that opendal will not send write request with if match headers. /// - /// For example, Ceph RADOS S3 doesn't support write with if match. + /// For example, Ceph RADOS S3 doesn't support write with if matched. pub disable_write_with_if_match: bool, /// Enable write with append so that opendal will send write request with append headers. @@ -258,6 +259,8 @@ impl crate::Configurator for S3Config { #[cfg(test)] mod tests { + use std::iter; + use super::*; use crate::Configurator; use crate::types::OperatorUri; @@ -355,13 +358,25 @@ mod tests { #[test] fn from_uri_extracts_bucket_and_root() { + let uri = OperatorUri::new("s3://example-bucket/path/to/root", iter::empty()).unwrap(); + let cfg = S3Config::from_uri(&uri).unwrap(); + assert_eq!(cfg.bucket, "example-bucket"); + assert_eq!(cfg.root.as_deref(), Some("path/to/root")); + } + + #[test] + fn from_uri_extracts_endpoint() { let uri = OperatorUri::new( - "s3://example-bucket/path/to/root", - Vec::<(String, String)>::new(), + "s3://example-bucket/path/to/root?endpoint=https%3A%2F%2Fcustom-s3-endpoint.com", + iter::empty(), ) .unwrap(); let cfg = S3Config::from_uri(&uri).unwrap(); assert_eq!(cfg.bucket, "example-bucket"); assert_eq!(cfg.root.as_deref(), Some("path/to/root")); + assert_eq!( + cfg.endpoint.as_deref(), + Some("https://custom-s3-endpoint.com") + ); } } diff --git a/core/src/types/operator/registry.rs b/core/src/types/operator/registry.rs index 1a4efb801..4aedc77d7 100644 --- a/core/src/types/operator/registry.rs +++ b/core/src/types/operator/registry.rs @@ -104,5 +104,6 @@ fn register_builtin_services(registry: &OperatorRegistry) { /// Factory adapter that builds an operator from a configurator type. fn factory<C: Configurator>(uri: &OperatorUri) -> Result<Operator> { let cfg = C::from_uri(uri)?; - Ok(Operator::from_config(cfg)?.finish()) + let builder = Operator::from_config(cfg)?; + Ok(builder.finish()) }
