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 16569f47d feat(services/azdls): Add user defined metadata support
(#6842)
16569f47d is described below
commit 16569f47dd48db47aee6db197752c58655cd9b20
Author: zhan7236 <[email protected]>
AuthorDate: Mon Dec 1 14:07:12 2025 +0800
feat(services/azdls): Add user defined metadata support (#6842)
---
core/src/services/azdls/backend.rs | 1 +
core/src/services/azdls/core.rs | 13 +++++++++++++
2 files changed, 14 insertions(+)
diff --git a/core/src/services/azdls/backend.rs
b/core/src/services/azdls/backend.rs
index 8ea6c51b6..e29f23bee 100644
--- a/core/src/services/azdls/backend.rs
+++ b/core/src/services/azdls/backend.rs
@@ -294,6 +294,7 @@ impl Builder for AzdlsBuilder {
write_can_multi: true,
write_with_if_none_match: true,
write_with_if_not_exists: true,
+ write_with_user_metadata: true,
create_dir: true,
delete: true,
diff --git a/core/src/services/azdls/core.rs b/core/src/services/azdls/core.rs
index e88b757cb..5e5424a5e 100644
--- a/core/src/services/azdls/core.rs
+++ b/core/src/services/azdls/core.rs
@@ -38,6 +38,7 @@ use crate::*;
const X_MS_RENAME_SOURCE: &str = "x-ms-rename-source";
const X_MS_VERSION: &str = "x-ms-version";
pub const X_MS_VERSION_ID: &str = "x-ms-version-id";
+pub const X_MS_META_PREFIX: &str = "x-ms-meta-";
pub const DIRECTORY: &str = "directory";
pub const FILE: &str = "file";
@@ -167,6 +168,13 @@ impl AzdlsCore {
req = req.header(IF_NONE_MATCH, v)
}
+ // Set user metadata headers.
+ if let Some(user_metadata) = args.user_metadata() {
+ for (key, value) in user_metadata {
+ req = req.header(format!("{X_MS_META_PREFIX}{key}"), value);
+ }
+ }
+
let operation = if resource == DIRECTORY {
Operation::CreateDir
} else {
@@ -316,6 +324,11 @@ impl AzdlsCore {
meta.set_version(version_id);
}
+ let user_meta = parse_prefixed_headers(headers, X_MS_META_PREFIX);
+ if !user_meta.is_empty() {
+ meta = meta.with_user_metadata(user_meta);
+ }
+
let resource = resp
.headers()
.get("x-ms-resource-type")