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 68c99b3de refactor(services/azdls): Refactor raw request send in
writer and bac… (#6109)
68c99b3de is described below
commit 68c99b3deea881e84d7007b4263fcc46dd41b43f
Author: Jorge Hermo <[email protected]>
AuthorDate: Sun Apr 27 15:56:27 2025 +0200
refactor(services/azdls): Refactor raw request send in writer and bac…
(#6109)
refactor(services/azdls): Refactor raw request send in writer and backend
---
core/src/services/azdls/backend.rs | 15 ++++----------
core/src/services/azdls/core.rs | 40 +++++++++++++++++++++-----------------
core/src/services/azdls/writer.rs | 40 +++++++++++++-------------------------
3 files changed, 40 insertions(+), 55 deletions(-)
diff --git a/core/src/services/azdls/backend.rs
b/core/src/services/azdls/backend.rs
index 9d50bc718..67307dd7c 100644
--- a/core/src/services/azdls/backend.rs
+++ b/core/src/services/azdls/backend.rs
@@ -271,19 +271,12 @@ impl Access for AzdlsBackend {
}
async fn create_dir(&self, path: &str, _: OpCreateDir) ->
Result<RpCreateDir> {
- let mut req = self.core.azdls_create_request(
- path,
- "directory",
- &OpWrite::default(),
- Buffer::new(),
- )?;
-
- self.core.sign(&mut req).await?;
-
- let resp = self.core.send(req).await?;
+ let resp = self
+ .core
+ .azdls_create(path, "directory", &OpWrite::default(),
Buffer::new())
+ .await?;
let status = resp.status();
-
match status {
StatusCode::CREATED | StatusCode::OK => Ok(RpCreateDir::default()),
_ => Err(parse_error(resp)),
diff --git a/core/src/services/azdls/core.rs b/core/src/services/azdls/core.rs
index 165d3b5a7..2e0878359 100644
--- a/core/src/services/azdls/core.rs
+++ b/core/src/services/azdls/core.rs
@@ -121,13 +121,13 @@ impl AzdlsCore {
/// resource should be one of `file` or `directory`
///
/// ref:
https://learn.microsoft.com/en-us/rest/api/storageservices/datalakestoragegen2/path/create
- pub fn azdls_create_request(
+ pub async fn azdls_create(
&self,
path: &str,
resource: &str,
args: &OpWrite,
body: Buffer,
- ) -> Result<Request<Buffer>> {
+ ) -> Result<Response<Buffer>> {
let p = build_abs_path(&self.root, path)
.trim_end_matches('/')
.to_string();
@@ -161,9 +161,11 @@ impl AzdlsCore {
}
// Set body
- let req = req.body(body).map_err(new_request_build_error)?;
+ let mut req = req.body(body).map_err(new_request_build_error)?;
+
+ self.sign(&mut req).await?;
- Ok(req)
+ self.send(req).await
}
pub async fn azdls_rename(&self, from: &str, to: &str) ->
Result<Response<Buffer>> {
@@ -191,13 +193,13 @@ impl AzdlsCore {
}
/// ref:
https://learn.microsoft.com/en-us/rest/api/storageservices/datalakestoragegen2/path/update
- pub fn azdls_update_request(
+ pub async fn azdls_update(
&self,
path: &str,
size: Option<u64>,
position: u64,
body: Buffer,
- ) -> Result<Request<Buffer>> {
+ ) -> Result<Response<Buffer>> {
let p = build_abs_path(&self.root, path);
// - close: Make this is the final action to this file.
@@ -217,9 +219,11 @@ impl AzdlsCore {
}
// Set body
- let req = req.body(body).map_err(new_request_build_error)?;
+ let mut req = req.body(body).map_err(new_request_build_error)?;
- Ok(req)
+ self.sign(&mut req).await?;
+
+ self.send(req).await
}
pub async fn azdls_get_properties(&self, path: &str) ->
Result<Response<Buffer>> {
@@ -307,16 +311,16 @@ impl AzdlsCore {
if !parts.is_empty() {
let parent_path = parts.join("/");
- let mut req = self.azdls_create_request(
- &parent_path,
- "directory",
- &OpWrite::default(),
- Buffer::new(),
- )?;
-
- self.sign(&mut req).await?;
-
- Ok(Some(self.send(req).await?))
+ let resp = self
+ .azdls_create(
+ &parent_path,
+ "directory",
+ &OpWrite::default(),
+ Buffer::new(),
+ )
+ .await?;
+
+ Ok(Some(resp))
} else {
Ok(None)
}
diff --git a/core/src/services/azdls/writer.rs
b/core/src/services/azdls/writer.rs
index 384023cbb..227022eba 100644
--- a/core/src/services/azdls/writer.rs
+++ b/core/src/services/azdls/writer.rs
@@ -41,13 +41,10 @@ impl AzdlsWriter {
impl oio::OneShotWrite for AzdlsWriter {
async fn write_once(&self, bs: Buffer) -> Result<Metadata> {
- let mut req =
- self.core
- .azdls_create_request(&self.path, "file", &self.op,
Buffer::new())?;
-
- self.core.sign(&mut req).await?;
-
- let resp = self.core.send(req).await?;
+ let resp = self
+ .core
+ .azdls_create(&self.path, "file", &self.op, Buffer::new())
+ .await?;
let status = resp.status();
match status {
@@ -57,13 +54,10 @@ impl oio::OneShotWrite for AzdlsWriter {
}
}
- let mut req = self
+ let resp = self
.core
- .azdls_update_request(&self.path, Some(bs.len() as u64), 0, bs)?;
-
- self.core.sign(&mut req).await?;
-
- let resp = self.core.send(req).await?;
+ .azdls_update(&self.path, Some(bs.len() as u64), 0, bs)
+ .await?;
let status = resp.status();
match status {
@@ -89,13 +83,10 @@ impl oio::AppendWrite for AzdlsWriter {
async fn append(&self, offset: u64, size: u64, body: Buffer) ->
Result<Metadata> {
if offset == 0 {
- let mut req =
- self.core
- .azdls_create_request(&self.path, "file", &self.op,
Buffer::new())?;
-
- self.core.sign(&mut req).await?;
-
- let resp = self.core.send(req).await?;
+ let resp = self
+ .core
+ .azdls_create(&self.path, "file", &self.op, Buffer::new())
+ .await?;
let status = resp.status();
match status {
@@ -106,13 +97,10 @@ impl oio::AppendWrite for AzdlsWriter {
}
}
- let mut req = self
+ let resp = self
.core
- .azdls_update_request(&self.path, Some(size), offset, body)?;
-
- self.core.sign(&mut req).await?;
-
- let resp = self.core.send(req).await?;
+ .azdls_update(&self.path, Some(size), offset, body)
+ .await?;
let status = resp.status();
match status {