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 2023/05/08 13:30:21 UTC
[incubator-opendal] branch main updated: feat(core): check capability (#2215)
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/incubator-opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 6fa13ad4 feat(core): check capability (#2215)
6fa13ad4 is described below
commit 6fa13ad41f5171f526258d162b26e518aee19022
Author: Suyan <su...@gmail.com>
AuthorDate: Mon May 8 21:30:17 2023 +0800
feat(core): check capability (#2215)
* feat(core): check capability for fs
Signed-off-by: suyanhanx <su...@gmail.com>
* basic check all
Signed-off-by: suyanhanx <su...@gmail.com>
* make fmt happy
Signed-off-by: suyanhanx <su...@gmail.com>
* check for all services
Signed-off-by: suyanhanx <su...@gmail.com>
* fix typo
Signed-off-by: suyanhanx <su...@gmail.com>
---------
Signed-off-by: suyanhanx <su...@gmail.com>
---
core/src/services/azblob/backend.rs | 16 +++++++++++---
core/src/services/azdfs/backend.rs | 11 +++++++++
core/src/services/dashmap/backend.rs | 11 +++++++--
core/src/services/fs/backend.rs | 12 +++++++++-
core/src/services/ftp/backend.rs | 12 ++++++++++
core/src/services/gcs/backend.rs | 19 +++++++++++-----
core/src/services/gdrive/builder.rs | 2 +-
core/src/services/ghac/backend.rs | 14 +++++++++---
core/src/services/hdfs/backend.rs | 16 +++++++++++---
core/src/services/http/backend.rs | 5 +++++
core/src/services/ipfs/backend.rs | 10 ++++++++-
core/src/services/ipmfs/backend.rs | 22 ++++++++++++++++++
core/src/services/memcached/backend.rs | 5 +++++
core/src/services/memory/backend.rs | 11 +++++++--
core/src/services/moka/backend.rs | 13 ++++++++---
core/src/services/obs/backend.rs | 10 +++++++--
core/src/services/oss/backend.rs | 22 +++++++++++++-----
core/src/services/redis/backend.rs | 12 ++++++++++
core/src/services/rocksdb/backend.rs | 7 +++++-
core/src/services/s3/backend.rs | 19 +++++++++++-----
core/src/services/sftp/backend.rs | 18 ++++++++++++++-
core/src/services/sled/backend.rs | 12 ++++++++++
core/src/services/supabase/backend.rs | 6 +++++
core/src/services/vercel_artifacts/backend.rs | 2 ++
core/src/services/vercel_artifacts/builder.rs | 3 +++
core/src/services/wasabi/backend.rs | 20 ++++++++++++-----
core/src/services/webdav/backend.rs | 12 +++++++++-
core/src/services/webhdfs/backend.rs | 12 ++++++++++
core/src/types/capability.rs | 32 +++++++++++++--------------
29 files changed, 305 insertions(+), 61 deletions(-)
diff --git a/core/src/services/azblob/backend.rs b/core/src/services/azblob/backend.rs
index 65bd334a..de9ed27c 100644
--- a/core/src/services/azblob/backend.rs
+++ b/core/src/services/azblob/backend.rs
@@ -56,9 +56,13 @@ const AZBLOB_BATCH_LIMIT: usize = 256;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
/// - [x] copy
+/// - [ ] rename
/// - [x] list
/// - [x] scan
/// - [x] presign
@@ -471,15 +475,21 @@ impl Accessor for AzblobBackend {
delete: true,
create_dir: true,
- list: true,
- scan: true,
copy: true,
+
+ scan: true,
+ list: true,
+ list_with_delimiter_slash: true,
+
presign: self.has_sas_token,
+ presign_stat: self.has_sas_token,
+ presign_read: self.has_sas_token,
+ presign_write: self.has_sas_token,
+
batch: true,
batch_delete: true,
batch_max_operations: Some(AZBLOB_BATCH_LIMIT),
- list_with_delimiter_slash: true,
..Default::default()
});
diff --git a/core/src/services/azdfs/backend.rs b/core/src/services/azdfs/backend.rs
index 167159d1..cde4bd59 100644
--- a/core/src/services/azdfs/backend.rs
+++ b/core/src/services/azdfs/backend.rs
@@ -55,8 +55,12 @@ const KNOWN_AZDFS_ENDPOINT_SUFFIX: &[&str] = &[
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
/// - [x] rename
/// - [x] list
/// - [ ] ~~scan~~
@@ -309,13 +313,20 @@ impl Accessor for AzdfsBackend {
.set_root(&self.core.root)
.set_name(&self.core.filesystem)
.set_capability(Capability {
+ stat: true,
+
read: true,
read_can_next: true,
read_with_range: true,
+
write: true,
+ create_dir: true,
+ delete: true,
rename: true,
+
list: true,
list_with_delimiter_slash: true,
+
..Default::default()
});
diff --git a/core/src/services/dashmap/backend.rs b/core/src/services/dashmap/backend.rs
index 18a4694b..c620d506 100644
--- a/core/src/services/dashmap/backend.rs
+++ b/core/src/services/dashmap/backend.rs
@@ -30,10 +30,17 @@ use crate::*;
///
/// This service can be used to:
///
-/// - [x] get
-/// - [x] set
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] list
/// - [x] scan
+/// - [ ] presign
+/// - [ ] blocking
#[derive(Default)]
pub struct DashmapBuilder {
root: Option<String>,
diff --git a/core/src/services/fs/backend.rs b/core/src/services/fs/backend.rs
index a7eae790..3004dc7a 100644
--- a/core/src/services/fs/backend.rs
+++ b/core/src/services/fs/backend.rs
@@ -42,8 +42,11 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
/// - [x] copy
/// - [x] rename
/// - [x] list
@@ -301,17 +304,24 @@ impl Accessor for FsBackend {
am.set_scheme(Scheme::Fs)
.set_root(&self.root.to_string_lossy())
.set_capability(Capability {
+ stat: true,
+
read: true,
read_can_seek: true,
read_with_range: true,
+
write: true,
write_without_content_length: true,
create_dir: true,
+ delete: true,
+
list: true,
+ list_with_delimiter_slash: true,
+
copy: true,
rename: true,
blocking: true,
- list_with_delimiter_slash: true,
+
..Default::default()
});
diff --git a/core/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs
index 4779db1e..998342d8 100644
--- a/core/src/services/ftp/backend.rs
+++ b/core/src/services/ftp/backend.rs
@@ -51,8 +51,13 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
/// - [x] list
/// - [ ] ~~scan~~
/// - [ ] ~~presign~~
@@ -317,11 +322,18 @@ impl Accessor for FtpBackend {
am.set_scheme(Scheme::Ftp)
.set_root(&self.root)
.set_capability(Capability {
+ stat: true,
+
read: true,
read_with_range: true,
+
write: true,
+ delete: true,
+ create_dir: true,
+
list: true,
list_with_delimiter_slash: true,
+
..Default::default()
});
diff --git a/core/src/services/gcs/backend.rs b/core/src/services/gcs/backend.rs
index 87b06337..078106d3 100644
--- a/core/src/services/gcs/backend.rs
+++ b/core/src/services/gcs/backend.rs
@@ -49,11 +49,15 @@ const DEFAULT_WRITE_FIXED_SIZE: usize = 8 * 1024 * 1024;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [x] copy
+/// - [ ] rename
/// - [x] list
/// - [x] scan
-/// - [x] copy
/// - [x] presign
/// - [ ] blocking
///
@@ -414,16 +418,21 @@ impl Accessor for GcsBackend {
write: true,
write_with_content_type: true,
write_without_content_length: true,
+ delete: true,
+ copy: true,
+ scan: true,
list: true,
list_with_limit: true,
list_with_start_after: true,
- scan: true,
- copy: true,
- presign: true,
-
list_with_delimiter_slash: true,
list_without_delimiter: true,
+
+ presign: true,
+ presign_stat: true,
+ presign_read: true,
+ presign_write: true,
+
..Default::default()
});
am
diff --git a/core/src/services/gdrive/builder.rs b/core/src/services/gdrive/builder.rs
index d7ed0c84..7a536b1b 100644
--- a/core/src/services/gdrive/builder.rs
+++ b/core/src/services/gdrive/builder.rs
@@ -47,7 +47,7 @@ use crate::*;
/// - `access_token`: set the access_token for google drive api
/// - `root`: Set the work directory for backend
///
-/// You can refer to [`GoogleDriveBuilder`]'s docs for more information
+/// You can refer to [`GdriveBuilder`]'s docs for more information
///
/// # Example
///
diff --git a/core/src/services/ghac/backend.rs b/core/src/services/ghac/backend.rs
index 4b55014a..94778079 100644
--- a/core/src/services/ghac/backend.rs
+++ b/core/src/services/ghac/backend.rs
@@ -67,13 +67,17 @@ const GITHUB_API_VERSION: &str = "2022-11-28";
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [x] copy
+/// - [ ] rename
/// - [ ] list
-/// - [ ] ~~scan~~
-/// - [ ] ~~presign~~
+/// - [ ] scan
+/// - [ ] presign
/// - [ ] blocking
-///
/// # Notes
///
/// This service is mainly provided by github actions.
@@ -301,11 +305,15 @@ impl Accessor for GhacBackend {
.set_root(&self.root)
.set_name(&self.version)
.set_capability(Capability {
+ stat: true,
+
read: true,
read_can_next: true,
read_with_range: true,
write: true,
+ create_dir: true,
+ delete: true,
..Default::default()
});
diff --git a/core/src/services/hdfs/backend.rs b/core/src/services/hdfs/backend.rs
index 5c0c8f0b..06e8ce27 100644
--- a/core/src/services/hdfs/backend.rs
+++ b/core/src/services/hdfs/backend.rs
@@ -41,13 +41,17 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
/// - [x] list
/// - [ ] ~~scan~~
/// - [ ] ~~presign~~
/// - [x] blocking
-///
/// # Differences with webhdfs
///
/// [Webhdfs][crate::services::Webhdfs] is powered by hdfs's RESTful HTTP API.
@@ -93,7 +97,7 @@ use crate::*;
/// ```
///
/// `CLASSPATH` is not set correctly or your hadoop installation is incorrect.
-///
+///
/// To set `CLASSPATH`:
/// ```shell
/// export CLASSPATH=$(find $HADOOP_HOME -iname "*.jar" | xargs echo | tr ' ' ':'):${CLASSPATH}
@@ -238,15 +242,21 @@ impl Accessor for HdfsBackend {
am.set_scheme(Scheme::Hdfs)
.set_root(&self.root)
.set_capability(Capability {
+ stat: true,
+
read: true,
read_can_seek: true,
read_with_range: true,
write: true,
+ create_dir: true,
+ delete: true,
+
list: true,
+ list_with_delimiter_slash: true,
+
blocking: true,
- list_with_delimiter_slash: true,
..Default::default()
});
diff --git a/core/src/services/http/backend.rs b/core/src/services/http/backend.rs
index e76536cc..99f02ba8 100644
--- a/core/src/services/http/backend.rs
+++ b/core/src/services/http/backend.rs
@@ -39,8 +39,13 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [ ] ~~write~~
+/// - [ ] ~~create_dir~~
+/// - [ ] ~~delete~~
+/// - [ ] ~~copy~~
+/// - [ ] ~~rename~~
/// - [ ] ~~list~~
/// - [ ] ~~scan~~
/// - [ ] ~~presign~~
diff --git a/core/src/services/ipfs/backend.rs b/core/src/services/ipfs/backend.rs
index 9db6c8bd..78da66f9 100644
--- a/core/src/services/ipfs/backend.rs
+++ b/core/src/services/ipfs/backend.rs
@@ -39,8 +39,13 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [ ] ~~write~~
+/// - [ ] ~~create_dir~~
+/// - [ ] ~~delete~~
+/// - [ ] ~~copy~~
+/// - [ ] ~~rename~~
/// - [x] list
/// - [ ] ~~scan~~
/// - [ ] presign
@@ -220,12 +225,15 @@ impl Accessor for IpfsBackend {
ma.set_scheme(Scheme::Ipfs)
.set_root(&self.root)
.set_capability(Capability {
+ stat: true,
+
read: true,
read_can_next: true,
read_with_range: true,
- list: true,
+ list: true,
list_with_delimiter_slash: true,
+
..Default::default()
});
diff --git a/core/src/services/ipmfs/backend.rs b/core/src/services/ipmfs/backend.rs
index c444f179..8b278e91 100644
--- a/core/src/services/ipmfs/backend.rs
+++ b/core/src/services/ipmfs/backend.rs
@@ -35,6 +35,23 @@ use crate::raw::*;
use crate::*;
/// Backend for IPFS service
+///
+/// # Capabilities
+///
+/// This service can be used to:
+///
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [ ] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [x] list
+/// - [ ] scan
+/// - [ ] presign
+/// - [ ] blocking
+///
#[derive(Clone)]
pub struct IpmfsBackend {
root: String,
@@ -75,13 +92,18 @@ impl Accessor for IpmfsBackend {
am.set_scheme(Scheme::Ipmfs)
.set_root(&self.root)
.set_capability(Capability {
+ stat: true,
+
read: true,
read_can_next: true,
read_with_range: true,
+
write: true,
+ delete: true,
list: true,
list_with_delimiter_slash: true,
+
..Default::default()
});
diff --git a/core/src/services/memcached/backend.rs b/core/src/services/memcached/backend.rs
index ee6b30e7..49d37dcb 100644
--- a/core/src/services/memcached/backend.rs
+++ b/core/src/services/memcached/backend.rs
@@ -34,8 +34,13 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
/// - [ ] ~~list~~
/// - [ ] scan
/// - [ ] ~~presign~~
diff --git a/core/src/services/memory/backend.rs b/core/src/services/memory/backend.rs
index c745e288..9ec2ea21 100644
--- a/core/src/services/memory/backend.rs
+++ b/core/src/services/memory/backend.rs
@@ -31,10 +31,17 @@ use crate::*;
///
/// This service can be used to:
///
-/// - [x] get
-/// - [x] set
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] list
/// - [x] scan
+/// - [ ] presign
+/// - [ ] blocking
#[derive(Default)]
pub struct MemoryBuilder {
root: Option<String>,
diff --git a/core/src/services/moka/backend.rs b/core/src/services/moka/backend.rs
index 381d8e72..f6b2a8fc 100644
--- a/core/src/services/moka/backend.rs
+++ b/core/src/services/moka/backend.rs
@@ -33,10 +33,17 @@ use crate::*;
///
/// This service can be used to:
///
-/// - [x] get
-/// - [x] set
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
/// - [x] delete
-/// - [ ] ~~ scan ~~
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] list
+/// - [ ] ~~scan~~
+/// - [ ] presign
+/// - [ ] blocking
#[derive(Default, Debug)]
pub struct MokaBuilder {
/// Name for this cache instance.
diff --git a/core/src/services/obs/backend.rs b/core/src/services/obs/backend.rs
index 13443551..8a9b06c6 100644
--- a/core/src/services/obs/backend.rs
+++ b/core/src/services/obs/backend.rs
@@ -41,9 +41,13 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
/// - [x] copy
+/// - [ ] rename
/// - [x] list
/// - [x] scan
/// - [ ] presign
@@ -320,10 +324,12 @@ impl Accessor for ObsBackend {
write_with_content_type: true,
write_with_cache_control: true,
- list: true,
- scan: true,
+ delete: true,
+ create_dir: true,
copy: true,
+ scan: true,
+ list: true,
list_with_delimiter_slash: true,
list_without_delimiter: true,
diff --git a/core/src/services/oss/backend.rs b/core/src/services/oss/backend.rs
index 1f42d076..7728731b 100644
--- a/core/src/services/oss/backend.rs
+++ b/core/src/services/oss/backend.rs
@@ -45,12 +45,16 @@ const DEFAULT_WRITE_MIN_SIZE: usize = 8 * 1024 * 1024;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
/// - [x] copy
+/// - [ ] rename
/// - [x] list
/// - [x] scan
-/// - [ ] presign
+/// - [x] presign
/// - [ ] blocking
///
/// # Configuration
@@ -460,17 +464,23 @@ impl Accessor for OssBackend {
write_with_cache_control: true,
write_with_content_type: true,
write_without_content_length: true,
+ delete: true,
+ create_dir: true,
+ copy: true,
- list: true,
scan: true,
- copy: true,
+ list: true,
+ list_with_delimiter_slash: true,
+ list_without_delimiter: true,
+
presign: true,
+ presign_stat: true,
+ presign_read: true,
+ presign_write: true,
+
batch: true,
batch_max_operations: Some(1000),
- list_with_delimiter_slash: true,
- list_without_delimiter: true,
-
..Default::default()
});
diff --git a/core/src/services/redis/backend.rs b/core/src/services/redis/backend.rs
index 3e484af0..1afc0083 100644
--- a/core/src/services/redis/backend.rs
+++ b/core/src/services/redis/backend.rs
@@ -52,6 +52,18 @@ const DEFAULT_REDIS_PORT: u16 = 6379;
/// - [ ] ~~presign~~
/// - [ ] blocking
///
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] ~~list~~
+/// - [ ] scan
+/// - [ ] ~~presign~~
+/// - [ ] blocking
+///
/// # Configuration
///
/// - `root`: Set the working directory of `OpenDAL`
diff --git a/core/src/services/rocksdb/backend.rs b/core/src/services/rocksdb/backend.rs
index 503139b7..68aa9a44 100644
--- a/core/src/services/rocksdb/backend.rs
+++ b/core/src/services/rocksdb/backend.rs
@@ -33,10 +33,15 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
/// - [ ] ~~list~~
-/// - [ ] scan
+/// - [x] scan
/// - [ ] ~~presign~~
/// - [x] blocking
///
diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs
index 25327f7e..75cc2af1 100644
--- a/core/src/services/s3/backend.rs
+++ b/core/src/services/s3/backend.rs
@@ -63,9 +63,13 @@ const DEFAULT_WRITE_MIN_SIZE: usize = 8 * 1024 * 1024;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
/// - [x] copy
+/// - [ ] rename
/// - [x] list
/// - [x] scan
/// - [x] presign
@@ -972,20 +976,25 @@ impl Accessor for S3Backend {
write_with_cache_control: true,
write_with_content_type: true,
write_without_content_length: true,
+ create_dir: true,
+ delete: true,
+ copy: true,
+ scan: true,
list: true,
list_with_limit: true,
list_with_start_after: true,
+ list_without_delimiter: true,
+ list_with_delimiter_slash: true,
- scan: true,
- copy: true,
presign: true,
+ presign_stat: true,
+ presign_read: true,
+ presign_write: true,
+
batch: true,
batch_max_operations: Some(1000),
- list_without_delimiter: true,
- list_with_delimiter_slash: true,
-
..Default::default()
});
diff --git a/core/src/services/sftp/backend.rs b/core/src/services/sftp/backend.rs
index 352eef19..45e992b9 100644
--- a/core/src/services/sftp/backend.rs
+++ b/core/src/services/sftp/backend.rs
@@ -55,6 +55,18 @@ use crate::*;
/// - [ ] ~~presign~~
/// - [ ] blocking
///
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [x] list
+/// - [ ] ~~scan~~
+/// - [ ] ~~presign~~
+/// - [ ] blocking
+///
/// # Configuration
///
/// - `endpoint`: Set the endpoint for connection
@@ -295,11 +307,15 @@ impl Accessor for SftpBackend {
.set_scheme(Scheme::Sftp)
.set_capability(Capability {
stat: true,
+
read: true,
+
write: true,
+ create_dir: true,
+ delete: true,
+
list: true,
list_with_limit: true,
-
list_with_delimiter_slash: true,
..Default::default()
diff --git a/core/src/services/sled/backend.rs b/core/src/services/sled/backend.rs
index ecd9b4a9..0a4c7292 100644
--- a/core/src/services/sled/backend.rs
+++ b/core/src/services/sled/backend.rs
@@ -41,6 +41,18 @@ use crate::*;
/// - [ ] ~~presign~~
/// - [x] blocking
///
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] ~~list~~
+/// - [ ] scan
+/// - [ ] ~~presign~~
+/// - [x] blocking
+///
/// # Configuration
///
/// - `datadir`: Set the path to the sled data directory
diff --git a/core/src/services/supabase/backend.rs b/core/src/services/supabase/backend.rs
index 8d86f3d5..2efbdd7f 100644
--- a/core/src/services/supabase/backend.rs
+++ b/core/src/services/supabase/backend.rs
@@ -33,9 +33,13 @@ use crate::*;
///
/// # Capabilities
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
/// - [ ] copy
+/// - [ ] rename
/// - [ ] list
/// - [ ] scan
/// - [ ] presign
@@ -216,7 +220,9 @@ impl Accessor for SupabaseBackend {
.set_name(&self.core.bucket)
.set_capability(Capability {
stat: true,
+
read: true,
+
write: true,
create_dir: true,
delete: true,
diff --git a/core/src/services/vercel_artifacts/backend.rs b/core/src/services/vercel_artifacts/backend.rs
index b4f63ebf..ea850303 100644
--- a/core/src/services/vercel_artifacts/backend.rs
+++ b/core/src/services/vercel_artifacts/backend.rs
@@ -60,7 +60,9 @@ impl Accessor for VercelArtifactsBackend {
.set_capability(Capability {
read: true,
read_can_next: true,
+
write: true,
+
..Default::default()
});
diff --git a/core/src/services/vercel_artifacts/builder.rs b/core/src/services/vercel_artifacts/builder.rs
index 7e760ecd..c2c2b33c 100644
--- a/core/src/services/vercel_artifacts/builder.rs
+++ b/core/src/services/vercel_artifacts/builder.rs
@@ -28,8 +28,11 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [ ] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
/// - [ ] ~~copy~~
/// - [ ] ~~rename~~
/// - [ ] ~~list~~
diff --git a/core/src/services/wasabi/backend.rs b/core/src/services/wasabi/backend.rs
index 4fb68601..671c477b 100644
--- a/core/src/services/wasabi/backend.rs
+++ b/core/src/services/wasabi/backend.rs
@@ -60,13 +60,16 @@ static ENDPOINT_TEMPLATES: Lazy<HashMap<&'static str, &'static str>> = Lazy::new
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
/// - [x] copy
+/// - [x] rename
/// - [x] list
/// - [x] scan
/// - [x] presign
-/// - [x] rename
/// - [ ] blocking
///
/// # Configuration
@@ -911,16 +914,23 @@ impl Accessor for WasabiBackend {
read_with_range: true,
write: true,
- list: true,
- scan: true,
+ create_dir: true,
+ delete: true,
copy: true,
- presign: true,
- batch: true,
rename: true,
+ scan: true,
+ list: true,
list_without_delimiter: true,
list_with_delimiter_slash: true,
+ presign: true,
+ presign_stat: true,
+ presign_read: true,
+ presign_write: true,
+
+ batch: true,
+
..Default::default()
});
diff --git a/core/src/services/webdav/backend.rs b/core/src/services/webdav/backend.rs
index 95b741ea..76866c0e 100644
--- a/core/src/services/webdav/backend.rs
+++ b/core/src/services/webdav/backend.rs
@@ -42,8 +42,11 @@ use crate::*;
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
/// - [x] copy
/// - [x] rename
/// - [x] list
@@ -267,15 +270,22 @@ impl Accessor for WebdavBackend {
ma.set_scheme(Scheme::Webdav)
.set_root(&self.root)
.set_capability(Capability {
+ stat: true,
+
read: true,
read_can_next: true,
read_with_range: true,
+
write: true,
- list: true,
+ create_dir: true,
+ delete: true,
copy: true,
rename: true,
+
+ list: true,
list_without_delimiter: true,
list_with_delimiter_slash: true,
+
..Default::default()
});
diff --git a/core/src/services/webhdfs/backend.rs b/core/src/services/webhdfs/backend.rs
index a1edc2d6..f065f141 100644
--- a/core/src/services/webhdfs/backend.rs
+++ b/core/src/services/webhdfs/backend.rs
@@ -51,8 +51,13 @@ const WEBHDFS_DEFAULT_ENDPOINT: &str = "http://127.0.0.1:9870";
///
/// This service can be used to:
///
+/// - [x] stat
/// - [x] read
/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
/// - [x] list
/// - [ ] ~~scan~~
/// - [ ] ~~presign~~
@@ -466,13 +471,20 @@ impl Accessor for WebhdfsBackend {
am.set_scheme(Scheme::Webhdfs)
.set_root(&self.root)
.set_capability(Capability {
+ stat: true,
+
read: true,
read_can_next: true,
read_with_range: true,
+
write: true,
+ create_dir: true,
+ delete: true,
+
list: true,
list_without_delimiter: true,
list_with_delimiter_slash: true,
+
..Default::default()
});
am
diff --git a/core/src/types/capability.rs b/core/src/types/capability.rs
index 3aa7598b..67d8832e 100644
--- a/core/src/types/capability.rs
+++ b/core/src/types/capability.rs
@@ -43,7 +43,7 @@ use std::fmt::Debug;
/// - Operation with sub operations should be named like `presign_read`.
/// - Operation with variants should be named like `read_can_seek`.
/// - Operation with arguments should be named like `read_with_range`.
-/// - Operation with limtations should be named like `batch_max_operations`.
+/// - Operation with limitations should be named like `batch_max_operations`.
#[derive(Copy, Clone, Default)]
pub struct Capability {
/// If operator supports stat natively, it will be true.
@@ -92,6 +92,12 @@ pub struct Capability {
/// If operator supports delete natively, it will be true.
pub delete: bool,
+ /// If operator supports copy natively, it will be true.
+ pub copy: bool,
+
+ /// If operator supports rename natively, it will be true.
+ pub rename: bool,
+
/// If operator supports list natively, it will be true.
pub list: bool,
/// If backend supports list with limit, it will be true.
@@ -107,12 +113,6 @@ pub struct Capability {
/// If backend supports scan with limit, it will be true.
pub scan_with_limit: bool,
- /// If operator supports copy natively, it will be true.
- pub copy: bool,
-
- /// If operator supports rename natively, it will be true.
- pub rename: bool,
-
/// If operator supports presign natively, it will be true.
pub presign: bool,
/// If operator supports presign read natively, it will be true.
@@ -137,12 +137,12 @@ impl Debug for Capability {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let mut s = vec![];
- if self.read {
- s.push("Read");
- }
if self.stat {
s.push("Stat");
}
+ if self.read {
+ s.push("Read");
+ }
if self.write {
s.push("Write");
}
@@ -152,18 +152,18 @@ impl Debug for Capability {
if self.delete {
s.push("Delete");
}
- if self.list {
- s.push("List");
- }
- if self.scan {
- s.push("Scan");
- }
if self.copy {
s.push("Copy");
}
if self.rename {
s.push("Rename");
}
+ if self.list {
+ s.push("List");
+ }
+ if self.scan {
+ s.push("Scan");
+ }
if self.presign {
s.push("Presign");
}