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 ee48defb9 feat(services/vercel_blob): Add operation in http context 
(#6101)
ee48defb9 is described below

commit ee48defb97fa360a55b920acea444d33575dacfc
Author: Jorge Hermo <[email protected]>
AuthorDate: Sun Apr 27 16:00:04 2025 +0200

    feat(services/vercel_blob): Add operation in http context (#6101)
---
 core/src/services/vercel_blob/core.rs   | 48 +++++++++++++++++++++++----------
 core/src/services/vercel_blob/writer.rs |  6 +----
 2 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/core/src/services/vercel_blob/core.rs 
b/core/src/services/vercel_blob/core.rs
index 4cbb910db..6435dbe74 100644
--- a/core/src/services/vercel_blob/core.rs
+++ b/core/src/services/vercel_blob/core.rs
@@ -108,18 +108,21 @@ impl VercelBlobCore {
         }
 
         // Set body
-        let req = req.body(Buffer::new()).map_err(new_request_build_error)?;
+        let req = req
+            .extension(Operation::Read)
+            .body(Buffer::new())
+            .map_err(new_request_build_error)?;
 
         self.info.http_client().fetch(req).await
     }
 
-    pub fn get_put_request(
+    pub async fn upload(
         &self,
         path: &str,
-        size: Option<u64>,
+        size: u64,
         args: &OpWrite,
         body: Buffer,
-    ) -> Result<Request<Buffer>> {
+    ) -> Result<Response<Buffer>> {
         let p = build_abs_path(&self.root, path);
 
         let url = format!(
@@ -131,9 +134,7 @@ impl VercelBlobCore {
 
         req = req.header(X_VERCEL_BLOB_ADD_RANDOM_SUFFIX, "0");
 
-        if let Some(size) = size {
-            req = req.header(header::CONTENT_LENGTH, size.to_string())
-        }
+        req = req.header(header::CONTENT_LENGTH, size.to_string());
 
         if let Some(mime) = args.content_type() {
             req = req.header(X_VERCEL_BLOB_CONTENT_TYPE, mime)
@@ -142,9 +143,12 @@ impl VercelBlobCore {
         let req = self.sign(req);
 
         // Set body
-        let req = req.body(body).map_err(new_request_build_error)?;
+        let req = req
+            .extension(Operation::Write)
+            .body(body)
+            .map_err(new_request_build_error)?;
 
-        Ok(req)
+        self.send(req).await
     }
 
     pub async fn head(&self, path: &str) -> Result<Response<Buffer>> {
@@ -166,7 +170,10 @@ impl VercelBlobCore {
         let req = self.sign(req);
 
         // Set body
-        let req = req.body(Buffer::new()).map_err(new_request_build_error)?;
+        let req = req
+            .extension(Operation::Stat)
+            .body(Buffer::new())
+            .map_err(new_request_build_error)?;
 
         self.send(req).await
     }
@@ -195,7 +202,10 @@ impl VercelBlobCore {
         let req = self.sign(req);
 
         // Set body
-        let req = req.body(Buffer::new()).map_err(new_request_build_error)?;
+        let req = req
+            .extension(Operation::Copy)
+            .body(Buffer::new())
+            .map_err(new_request_build_error)?;
 
         self.send(req).await
     }
@@ -217,7 +227,10 @@ impl VercelBlobCore {
         let req = self.sign(req);
 
         // Set body
-        let req = req.body(Buffer::new()).map_err(new_request_build_error)?;
+        let req = req
+            .extension(Operation::List)
+            .body(Buffer::new())
+            .map_err(new_request_build_error)?;
 
         let resp = self.send(req).await?;
 
@@ -259,7 +272,10 @@ impl VercelBlobCore {
         };
 
         // Set body
-        let req = req.body(Buffer::new()).map_err(new_request_build_error)?;
+        let req = req
+            .extension(Operation::Write)
+            .body(Buffer::new())
+            .map_err(new_request_build_error)?;
 
         self.send(req).await
     }
@@ -290,7 +306,10 @@ impl VercelBlobCore {
         let req = self.sign(req);
 
         // Set body
-        let req = req.body(body).map_err(new_request_build_error)?;
+        let req = req
+            .extension(Operation::Write)
+            .body(body)
+            .map_err(new_request_build_error)?;
 
         self.send(req).await
     }
@@ -320,6 +339,7 @@ impl VercelBlobCore {
 
         let req = req
             .header(header::CONTENT_TYPE, "application/json")
+            .extension(Operation::Write)
             .body(Buffer::from(Bytes::from(parts_json.to_string())))
             .map_err(new_request_build_error)?;
 
diff --git a/core/src/services/vercel_blob/writer.rs 
b/core/src/services/vercel_blob/writer.rs
index bcb4acb4f..d33a74489 100644
--- a/core/src/services/vercel_blob/writer.rs
+++ b/core/src/services/vercel_blob/writer.rs
@@ -44,11 +44,7 @@ impl VercelBlobWriter {
 
 impl oio::MultipartWrite for VercelBlobWriter {
     async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata> {
-        let req = self
-            .core
-            .get_put_request(&self.path, Some(size), &self.op, body)?;
-
-        let resp = self.core.send(req).await?;
+        let resp = self.core.upload(&self.path, size, &self.op, body).await?;
 
         let status = resp.status();
 

Reply via email to