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();