You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2025/04/07 09:07:21 UTC
(opendal) 01/02: Rename existing list objects to v2
This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch add-list-objects-v1-support
in repository https://gitbox.apache.org/repos/asf/opendal.git
commit 9128611861e1463a5a043f33de8e5f7cc8e4be86
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Mon Apr 7 16:22:27 2025 +0800
Rename existing list objects to v2
Signed-off-by: Xuanwo <gi...@xuanwo.io>
---
core/src/services/s3/backend.rs | 4 ++--
core/src/services/s3/core.rs | 9 +++++----
core/src/services/s3/lister.rs | 15 ++++++++-------
3 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs
index 9ce15829a..b696793fb 100644
--- a/core/src/services/s3/backend.rs
+++ b/core/src/services/s3/backend.rs
@@ -43,7 +43,7 @@ use std::sync::LazyLock;
use super::core::*;
use super::delete::S3Deleter;
use super::error::parse_error;
-use super::lister::{S3Lister, S3Listers, S3ObjectVersionsLister};
+use super::lister::{S3ListerV2, S3Listers, S3ObjectVersionsLister};
use super::writer::S3Writer;
use super::writer::S3Writers;
use crate::raw::oio::PageLister;
@@ -1095,7 +1095,7 @@ impl Access for S3Backend {
args,
)))
} else {
- TwoWays::One(PageLister::new(S3Lister::new(
+ TwoWays::One(PageLister::new(S3ListerV2::new(
self.core.clone(),
path,
args,
diff --git a/core/src/services/s3/core.rs b/core/src/services/s3/core.rs
index ba7d530f8..60a2db6b4 100644
--- a/core/src/services/s3/core.rs
+++ b/core/src/services/s3/core.rs
@@ -676,7 +676,7 @@ impl S3Core {
self.send(req).await
}
- pub async fn s3_list_objects(
+ pub async fn s3_list_objects_v2(
&self,
path: &str,
continuation_token: &str,
@@ -1070,7 +1070,7 @@ pub struct DeleteObjectsResultError {
pub version_id: Option<String>,
}
-/// Output of ListBucket/ListObjects.
+/// Output of ListBucketV2/ListObjectsV2.
///
/// ## Note
///
@@ -1081,7 +1081,7 @@ pub struct DeleteObjectsResultError {
/// is not exist.
#[derive(Default, Debug, Deserialize)]
#[serde(default, rename_all = "PascalCase")]
-pub struct ListObjectsOutput {
+pub struct ListObjectsOutputV2 {
pub is_truncated: Option<bool>,
pub next_continuation_token: Option<String>,
pub common_prefixes: Vec<OutputCommonPrefix>,
@@ -1407,7 +1407,8 @@ mod tests {
</ListBucketResult>"#,
);
- let out: ListObjectsOutput = quick_xml::de::from_reader(bs.reader()).expect("must success");
+ let out: ListObjectsOutputV2 =
+ quick_xml::de::from_reader(bs.reader()).expect("must success");
assert!(!out.is_truncated.unwrap());
assert!(out.next_continuation_token.is_none());
diff --git a/core/src/services/s3/lister.rs b/core/src/services/s3/lister.rs
index f280e10e4..f1bf4b5ef 100644
--- a/core/src/services/s3/lister.rs
+++ b/core/src/services/s3/lister.rs
@@ -18,7 +18,7 @@
use std::sync::Arc;
use super::core::S3Core;
-use super::core::{ListObjectVersionsOutput, ListObjectsOutput};
+use super::core::{ListObjectVersionsOutput, ListObjectsOutputV2};
use super::error::parse_error;
use crate::raw::oio::PageContext;
use crate::raw::*;
@@ -29,9 +29,10 @@ use crate::Result;
use bytes::Buf;
use quick_xml::de;
-pub type S3Listers = TwoWays<oio::PageLister<S3Lister>, oio::PageLister<S3ObjectVersionsLister>>;
+pub type S3Listers = TwoWays<oio::PageLister<S3ListerV2>, oio::PageLister<S3ObjectVersionsLister>>;
-pub struct S3Lister {
+/// S3ListerV2 implements ListObjectV2 for s3 backend.
+pub struct S3ListerV2 {
core: Arc<S3Core>,
path: String,
@@ -41,7 +42,7 @@ pub struct S3Lister {
abs_start_after: Option<String>,
}
-impl S3Lister {
+impl S3ListerV2 {
pub fn new(core: Arc<S3Core>, path: &str, args: OpList) -> Self {
let delimiter = if args.recursive() { "" } else { "/" };
let abs_start_after = args
@@ -59,11 +60,11 @@ impl S3Lister {
}
}
-impl oio::PageList for S3Lister {
+impl oio::PageList for S3ListerV2 {
async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()> {
let resp = self
.core
- .s3_list_objects(
+ .s3_list_objects_v2(
&self.path,
&ctx.token,
self.delimiter,
@@ -82,7 +83,7 @@ impl oio::PageList for S3Lister {
}
let bs = resp.into_body();
- let output: ListObjectsOutput = de::from_reader(bs.reader())
+ let output: ListObjectsOutputV2 = de::from_reader(bs.reader())
.map_err(new_xml_deserialize_error)
// Allow S3 list to retry on XML deserialization errors.
//