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 <[email protected]>
AuthorDate: Mon Apr 7 16:22:27 2025 +0800

    Rename existing list objects to v2
    
    Signed-off-by: Xuanwo <[email protected]>
---
 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.
             //

Reply via email to