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")

Reply via email to