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 dae0c5fd6 refacrtor: Reduce usage of scheme inside raw (#6457) dae0c5fd6 is described below commit dae0c5fd6c5a3df731b304eb4be011e5dad25dc9 Author: Xuanwo <git...@xuanwo.io> AuthorDate: Fri Aug 1 20:23:11 2025 +0800 refacrtor: Reduce usage of scheme inside raw (#6457) * Don't use scheme inside raw Signed-off-by: Xuanwo <git...@xuanwo.io> * Add defaut scheme Signed-off-by: Xuanwo <git...@xuanwo.io> * Add default scehme for services Signed-off-by: Xuanwo <git...@xuanwo.io> * Fix tests Signed-off-by: Xuanwo <git...@xuanwo.io> --------- Signed-off-by: Xuanwo <git...@xuanwo.io> --- core/src/docs/internals/accessor.rs | 3 +- core/src/layers/correctness_check.rs | 1 + core/src/layers/error_context.rs | 4 +- core/src/layers/fastmetrics.rs | 2 +- core/src/layers/metrics.rs | 2 +- core/src/layers/observe/metrics.rs | 2 +- core/src/layers/otelmetrics.rs | 2 +- core/src/layers/prometheus.rs | 2 +- core/src/layers/prometheus_client.rs | 2 +- core/src/layers/retry.rs | 24 ++++---- core/src/raw/accessor.rs | 28 +++++++--- core/src/raw/adapters/kv/backend.rs | 2 +- core/src/raw/adapters/typed_kv/backend.rs | 2 +- core/src/raw/azure.rs | 80 +++++++++++++++++---------- core/src/raw/layer.rs | 2 +- core/src/services/aliyun_drive/backend.rs | 5 +- core/src/services/aliyun_drive/mod.rs | 3 + core/src/services/alluxio/backend.rs | 5 +- core/src/services/alluxio/mod.rs | 3 + core/src/services/azblob/backend.rs | 5 +- core/src/services/azblob/mod.rs | 3 + core/src/services/azdls/backend.rs | 5 +- core/src/services/azdls/mod.rs | 3 + core/src/services/azfile/backend.rs | 5 +- core/src/services/azfile/mod.rs | 3 + core/src/services/b2/backend.rs | 5 +- core/src/services/b2/mod.rs | 3 + core/src/services/cacache/backend.rs | 5 +- core/src/services/cacache/mod.rs | 3 + core/src/services/cloudflare_kv/backend.rs | 1 - core/src/services/compfs/backend.rs | 5 +- core/src/services/compfs/mod.rs | 3 + core/src/services/cos/backend.rs | 5 +- core/src/services/cos/mod.rs | 3 + core/src/services/d1/backend.rs | 1 - core/src/services/dashmap/backend.rs | 5 +- core/src/services/dashmap/mod.rs | 3 + core/src/services/dbfs/backend.rs | 5 +- core/src/services/dbfs/mod.rs | 3 + core/src/services/dropbox/builder.rs | 5 +- core/src/services/dropbox/mod.rs | 3 + core/src/services/etcd/backend.rs | 1 - core/src/services/foundationdb/backend.rs | 1 - core/src/services/fs/backend.rs | 5 +- core/src/services/fs/mod.rs | 3 + core/src/services/ftp/backend.rs | 5 +- core/src/services/ftp/mod.rs | 3 + core/src/services/gcs/backend.rs | 5 +- core/src/services/gcs/mod.rs | 3 + core/src/services/gdrive/builder.rs | 5 +- core/src/services/gdrive/mod.rs | 3 + core/src/services/ghac/backend.rs | 5 +- core/src/services/ghac/mod.rs | 3 + core/src/services/ghac/writer.rs | 2 +- core/src/services/github/backend.rs | 5 +- core/src/services/github/mod.rs | 3 + core/src/services/gridfs/backend.rs | 1 - core/src/services/hdfs/backend.rs | 5 +- core/src/services/hdfs/mod.rs | 3 + core/src/services/hdfs_native/backend.rs | 5 +- core/src/services/hdfs_native/mod.rs | 3 + core/src/services/http/backend.rs | 5 +- core/src/services/http/mod.rs | 3 + core/src/services/huggingface/backend.rs | 5 +- core/src/services/huggingface/mod.rs | 3 + core/src/services/ipfs/backend.rs | 5 +- core/src/services/ipfs/mod.rs | 3 + core/src/services/ipmfs/builder.rs | 5 +- core/src/services/ipmfs/mod.rs | 3 + core/src/services/koofr/backend.rs | 5 +- core/src/services/koofr/mod.rs | 3 + core/src/services/lakefs/backend.rs | 5 +- core/src/services/lakefs/mod.rs | 3 + core/src/services/memcached/backend.rs | 1 - core/src/services/memory/backend.rs | 5 +- core/src/services/memory/mod.rs | 3 + core/src/services/mini_moka/backend.rs | 5 +- core/src/services/mini_moka/mod.rs | 3 + core/src/services/moka/backend.rs | 5 +- core/src/services/moka/mod.rs | 3 + core/src/services/mongodb/backend.rs | 1 - core/src/services/monoiofs/backend.rs | 1 - core/src/services/monoiofs/core.rs | 4 +- core/src/services/monoiofs/mod.rs | 3 + core/src/services/mysql/backend.rs | 1 - core/src/services/obs/backend.rs | 5 +- core/src/services/obs/mod.rs | 3 + core/src/services/onedrive/builder.rs | 5 +- core/src/services/onedrive/mod.rs | 3 + core/src/services/oss/backend.rs | 5 +- core/src/services/oss/mod.rs | 3 + core/src/services/pcloud/backend.rs | 5 +- core/src/services/pcloud/mod.rs | 3 + core/src/services/persy/backend.rs | 1 - core/src/services/postgresql/backend.rs | 1 - core/src/services/redb/backend.rs | 1 - core/src/services/redis/backend.rs | 7 +-- core/src/services/redis/mod.rs | 3 + core/src/services/rocksdb/backend.rs | 1 - core/src/services/s3/backend.rs | 4 +- core/src/services/s3/mod.rs | 3 + core/src/services/seafile/backend.rs | 5 +- core/src/services/seafile/mod.rs | 3 + core/src/services/sftp/backend.rs | 5 +- core/src/services/sftp/mod.rs | 3 + core/src/services/sled/backend.rs | 1 - core/src/services/sqlite/backend.rs | 1 - core/src/services/surrealdb/backend.rs | 1 - core/src/services/swift/backend.rs | 5 +- core/src/services/swift/mod.rs | 3 + core/src/services/tikv/backend.rs | 1 - core/src/services/upyun/backend.rs | 5 +- core/src/services/upyun/mod.rs | 3 + core/src/services/vercel_artifacts/builder.rs | 6 +- core/src/services/vercel_artifacts/mod.rs | 3 + core/src/services/vercel_blob/backend.rs | 5 +- core/src/services/vercel_blob/mod.rs | 3 + core/src/services/webdav/backend.rs | 5 +- core/src/services/webdav/mod.rs | 3 + core/src/services/webhdfs/backend.rs | 5 +- core/src/services/webhdfs/mod.rs | 3 + core/src/services/yandex_disk/backend.rs | 5 +- core/src/services/yandex_disk/mod.rs | 3 + core/src/types/builder.rs | 3 - core/src/types/operator/info.rs | 4 +- core/src/types/operator/operator.rs | 2 +- 126 files changed, 328 insertions(+), 219 deletions(-) diff --git a/core/src/docs/internals/accessor.rs b/core/src/docs/internals/accessor.rs index 30c6c6293..7e629d367 100644 --- a/core/src/docs/internals/accessor.rs +++ b/core/src/docs/internals/accessor.rs @@ -251,7 +251,6 @@ //! } //! //! impl Builder for DuckBuilder { -//! const SCHEME: Scheme = Scheme::Duck; //! type Accessor = DuckBackend; //! type Config = DuckConfig; //! @@ -298,7 +297,7 @@ //! //! fn metadata(&self) -> AccessorInfo { //! let am = AccessorInfo::default(); -//! am.set_scheme(Scheme::Duck) +//! am.set_scheme("duck") //! .set_root(&self.root) //! .set_capability( //! Capability { diff --git a/core/src/layers/correctness_check.rs b/core/src/layers/correctness_check.rs index c0ba97b49..fd4fc3aa2 100644 --- a/core/src/layers/correctness_check.rs +++ b/core/src/layers/correctness_check.rs @@ -271,6 +271,7 @@ mod tests { fn info(&self) -> Arc<AccessorInfo> { let info = AccessorInfo::default(); + info.set_scheme("memory"); info.set_native_capability(self.capability); info.into() diff --git a/core/src/layers/error_context.rs b/core/src/layers/error_context.rs index f82a75152..315068a98 100644 --- a/core/src/layers/error_context.rs +++ b/core/src/layers/error_context.rs @@ -188,7 +188,7 @@ impl<A: Access> LayeredAccess for ErrorContextAccessor<A> { } pub struct ErrorContextWrapper<T> { - scheme: Scheme, + scheme: &'static str, path: String, inner: T, range: BytesRange, @@ -196,7 +196,7 @@ pub struct ErrorContextWrapper<T> { } impl<T> ErrorContextWrapper<T> { - fn new(scheme: Scheme, path: String, inner: T) -> Self { + fn new(scheme: &'static str, path: String, inner: T) -> Self { Self { scheme, path, diff --git a/core/src/layers/fastmetrics.rs b/core/src/layers/fastmetrics.rs index 2ce066fe3..8ee44fc8d 100644 --- a/core/src/layers/fastmetrics.rs +++ b/core/src/layers/fastmetrics.rs @@ -508,7 +508,7 @@ struct OperationLabels { impl EncodeLabelSet for OperationLabels { fn encode(&self, encoder: &mut dyn LabelSetEncoder) -> fmt::Result { - encoder.encode(&(observe::LABEL_SCHEME, self.labels.scheme.into_static()))?; + encoder.encode(&(observe::LABEL_SCHEME, self.labels.scheme))?; encoder.encode(&(observe::LABEL_NAMESPACE, self.labels.namespace.as_ref()))?; if !self.disable_label_root { encoder.encode(&(observe::LABEL_ROOT, self.labels.root.as_ref()))?; diff --git a/core/src/layers/metrics.rs b/core/src/layers/metrics.rs index 90717bc90..cf3591c52 100644 --- a/core/src/layers/metrics.rs +++ b/core/src/layers/metrics.rs @@ -160,7 +160,7 @@ impl OperationLabels { let mut labels = Vec::with_capacity(6); labels.extend([ - Label::new(observe::LABEL_SCHEME, self.0.scheme.into_static()), + Label::new(observe::LABEL_SCHEME, self.0.scheme), Label::new(observe::LABEL_NAMESPACE, self.0.namespace), Label::new(observe::LABEL_ROOT, self.0.root), Label::new(observe::LABEL_OPERATION, self.0.operation), diff --git a/core/src/layers/observe/metrics.rs b/core/src/layers/observe/metrics.rs index 20290338d..7e90d3da3 100644 --- a/core/src/layers/observe/metrics.rs +++ b/core/src/layers/observe/metrics.rs @@ -151,7 +151,7 @@ pub static LABEL_STATUS_CODE: &str = "status_code"; pub struct MetricLabels { /// The storage scheme identifier (e.g., "s3", "gcs", "azblob", "fs"). /// Used to differentiate between different storage backends. - pub scheme: Scheme, + pub scheme: &'static str, /// The storage namespace (e.g., bucket name, container name). /// Identifies the specific storage container being accessed. pub namespace: Arc<str>, diff --git a/core/src/layers/otelmetrics.rs b/core/src/layers/otelmetrics.rs index 95c416faa..c25b8a633 100644 --- a/core/src/layers/otelmetrics.rs +++ b/core/src/layers/otelmetrics.rs @@ -432,7 +432,7 @@ impl OtelMetricsInterceptor { let mut attributes = Vec::with_capacity(6); attributes.extend([ - KeyValue::new(observe::LABEL_SCHEME, attrs.scheme.into_static()), + KeyValue::new(observe::LABEL_SCHEME, attrs.scheme), KeyValue::new(observe::LABEL_NAMESPACE, attrs.namespace), KeyValue::new(observe::LABEL_ROOT, attrs.root), KeyValue::new(observe::LABEL_OPERATION, attrs.operation), diff --git a/core/src/layers/prometheus.rs b/core/src/layers/prometheus.rs index 7667f0604..ce7bc8455 100644 --- a/core/src/layers/prometheus.rs +++ b/core/src/layers/prometheus.rs @@ -667,7 +667,7 @@ impl OperationLabels { let mut labels = Vec::with_capacity(6); labels.extend([ - self.0.scheme.into_static(), + self.0.scheme, self.0.namespace.as_ref(), self.0.root.as_ref(), self.0.operation, diff --git a/core/src/layers/prometheus_client.rs b/core/src/layers/prometheus_client.rs index f6836f00e..827b7dd0d 100644 --- a/core/src/layers/prometheus_client.rs +++ b/core/src/layers/prometheus_client.rs @@ -490,7 +490,7 @@ struct OperationLabels { impl EncodeLabelSet for OperationLabels { fn encode(&self, mut encoder: LabelSetEncoder) -> Result<(), fmt::Error> { - (observe::LABEL_SCHEME, self.labels.scheme.into_static()).encode(encoder.encode_label())?; + (observe::LABEL_SCHEME, self.labels.scheme).encode(encoder.encode_label())?; (observe::LABEL_NAMESPACE, self.labels.namespace.as_ref()) .encode(encoder.encode_label())?; if !self.disable_label_root { diff --git a/core/src/layers/retry.rs b/core/src/layers/retry.rs index 19471f732..3e4ab754c 100644 --- a/core/src/layers/retry.rs +++ b/core/src/layers/retry.rs @@ -619,7 +619,6 @@ mod tests { } impl Builder for MockBuilder { - const SCHEME: Scheme = Scheme::Custom("mock"); type Config = (); fn build(self) -> Result<impl Access> { @@ -642,18 +641,17 @@ mod tests { fn info(&self) -> Arc<AccessorInfo> { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Custom("mock")) - .set_native_capability(Capability { - read: true, - write: true, - write_can_multi: true, - delete: true, - delete_max_size: Some(10), - stat: true, - list: true, - list_with_recursive: true, - ..Default::default() - }); + am.set_scheme("mock").set_native_capability(Capability { + read: true, + write: true, + write_can_multi: true, + delete: true, + delete_max_size: Some(10), + stat: true, + list: true, + list_with_recursive: true, + ..Default::default() + }); am.into() } diff --git a/core/src/raw/accessor.rs b/core/src/raw/accessor.rs index 821c0d32b..8a8157211 100644 --- a/core/src/raw/accessor.rs +++ b/core/src/raw/accessor.rs @@ -450,7 +450,7 @@ impl Access for () { fn info(&self) -> Arc<AccessorInfo> { let ai = AccessorInfo::default(); - ai.set_scheme(Scheme::Custom("dummy")) + ai.set_scheme("dummy") .set_root("") .set_name("dummy") .set_native_capability(Capability::default()); @@ -543,9 +543,9 @@ impl<T: Access + ?Sized> Access for Arc<T> { /// Accessor is the type erased accessor with `Arc<dyn Accessor>`. pub type Accessor = Arc<dyn AccessDyn>; -#[derive(Debug, Default)] +#[derive(Debug)] struct AccessorInfoInner { - scheme: Scheme, + scheme: &'static str, root: Arc<str>, name: Arc<str>, @@ -556,6 +556,20 @@ struct AccessorInfoInner { executor: Executor, } +impl Default for AccessorInfoInner { + fn default() -> Self { + Self { + scheme: "unknown", + root: Arc::from(""), + name: Arc::from(""), + native_capability: Capability::default(), + full_capability: Capability::default(), + http_client: HttpClient::default(), + executor: Executor::default(), + } + } +} + /// Info for the accessor. Users can use this struct to retrieve information about the underlying backend. /// /// This struct is intentionally not implemented with `Clone` to ensure that all accesses @@ -621,27 +635,27 @@ impl Hash for AccessorInfo { } impl AccessorInfo { - /// [`Scheme`] of backend. + /// Scheme of backend. /// /// # Panic Safety /// /// This method safely handles lock poisoning scenarios. If the inner `RwLock` is poisoned, /// this method will gracefully continue execution by simply returning the current scheme. - pub fn scheme(&self) -> Scheme { + pub fn scheme(&self) -> &'static str { match self.inner.read() { Ok(v) => v.scheme, Err(err) => err.get_ref().scheme, } } - /// Set [`Scheme`] for backend. + /// Set scheme for backend. /// /// # Panic Safety /// /// This method safely handles lock poisoning scenarios. If the inner `RwLock` is poisoned, /// this method will gracefully continue execution by simply skipping the update operation /// rather than propagating the panic. - pub fn set_scheme(&self, scheme: Scheme) -> &Self { + pub fn set_scheme(&self, scheme: &'static str) -> &Self { if let Ok(mut v) = self.inner.write() { v.scheme = scheme; } diff --git a/core/src/raw/adapters/kv/backend.rs b/core/src/raw/adapters/kv/backend.rs index 05bb716b1..dde5b1c50 100644 --- a/core/src/raw/adapters/kv/backend.rs +++ b/core/src/raw/adapters/kv/backend.rs @@ -51,7 +51,7 @@ where info: { let am: AccessorInfo = AccessorInfo::default(); am.set_root("/"); - am.set_scheme(kv_info.scheme()); + am.set_scheme(kv_info.scheme().into_static()); am.set_name(kv_info.name()); let mut cap = kv_info.capabilities(); diff --git a/core/src/raw/adapters/typed_kv/backend.rs b/core/src/raw/adapters/typed_kv/backend.rs index 8e08438b0..70aabdbe7 100644 --- a/core/src/raw/adapters/typed_kv/backend.rs +++ b/core/src/raw/adapters/typed_kv/backend.rs @@ -46,7 +46,7 @@ where info: { let am: AccessorInfo = AccessorInfo::default(); am.set_root("/"); - am.set_scheme(kv_info.scheme()); + am.set_scheme(kv_info.scheme().into_static()); am.set_name(kv_info.name()); let kv_cap = kv_info.capabilities(); diff --git a/core/src/raw/azure.rs b/core/src/raw/azure.rs index bfa58ee00..70c6f7fcc 100644 --- a/core/src/raw/azure.rs +++ b/core/src/raw/azure.rs @@ -75,10 +75,12 @@ pub(crate) enum AzureStorageService { Blob, /// Azure File Storage. + #[cfg(feature = "services-azfile")] File, /// Azure Data Lake Storage Gen2. /// Backed by Blob Storage but exposed through a different endpoint (`dfs`). + #[cfg(feature = "services-azdls")] Adls, } @@ -180,7 +182,9 @@ fn collect_endpoint( ) -> Result<Option<String>> { match storage { AzureStorageService::Blob => collect_or_build_endpoint(key_values, "BlobEndpoint", "blob"), + #[cfg(feature = "services-azfile")] AzureStorageService::File => collect_or_build_endpoint(key_values, "FileEndpoint", "file"), + #[cfg(feature = "services-azdls")] AzureStorageService::Adls => { // ADLS doesn't have a dedicated endpoint field and we can only // build it from parts. @@ -281,7 +285,8 @@ mod tests { #[test] fn test_azure_config_from_connection_string() { - let test_cases = vec![ + #[allow(unused_mut)] + let mut test_cases = vec![ ("minimal fields", (AzureStorageService::Blob, "BlobEndpoint=https://testaccount.blob.core.windows.net/"), Some(AzureStorageConfig{ @@ -322,29 +327,6 @@ mod tests { ..Default::default() }), ), - ("adls endpoint from parts", - (AzureStorageService::Adls, "AccountName=testaccount;EndpointSuffix=core.windows.net;DefaultEndpointsProtocol=https"), - Some(AzureStorageConfig{ - account_name: Some("testaccount".to_string()), - endpoint: Some("https://testaccount.dfs.core.windows.net".to_string()), - ..Default::default() - }), - ), - ("file endpoint from field", - (AzureStorageService::File, "FileEndpoint=https://testaccount.file.core.windows.net"), - Some(AzureStorageConfig{ - endpoint: Some("https://testaccount.file.core.windows.net".to_string()), - ..Default::default() - }) - ), - ("file endpoint from parts", - (AzureStorageService::File, "AccountName=testaccount;EndpointSuffix=core.windows.net"), - Some(AzureStorageConfig{ - account_name: Some("testaccount".to_string()), - endpoint: Some("https://testaccount.file.core.windows.net".to_string()), - ..Default::default() - }), - ), ("prefers sas over key", (AzureStorageService::Blob, "AccountName=testaccount;AccountKey=testkey;SharedAccessSignature=sas_token"), Some(AzureStorageConfig{ @@ -415,12 +397,54 @@ mod tests { (AzureStorageService::Blob, "DefaultEndpointsProtocol=ftp;AccountName=example;EndpointSuffix=core.windows.net",), None, // This should fail due to invalid protocol ), - ("azdls development storage", - (AzureStorageService::Adls, "UseDevelopmentStorage=true"), - Some(AzureStorageConfig::default()), // Azurite doesn't support ADLSv2, so we ignore this case - ), ]; + #[cfg(feature = "services-azdls")] + test_cases.push( + ("adls endpoint from parts", + (AzureStorageService::Adls, "AccountName=testaccount;EndpointSuffix=core.windows.net;DefaultEndpointsProtocol=https"), + Some(AzureStorageConfig{ + account_name: Some("testaccount".to_string()), + endpoint: Some("https://testaccount.dfs.core.windows.net".to_string()), + ..Default::default() + }), + ) + ); + + #[cfg(feature = "services-azfile")] + test_cases.extend(vec![ + ( + "file endpoint from field", + ( + AzureStorageService::File, + "FileEndpoint=https://testaccount.file.core.windows.net", + ), + Some(AzureStorageConfig { + endpoint: Some("https://testaccount.file.core.windows.net".to_string()), + ..Default::default() + }), + ), + ( + "file endpoint from parts", + ( + AzureStorageService::File, + "AccountName=testaccount;EndpointSuffix=core.windows.net", + ), + Some(AzureStorageConfig { + account_name: Some("testaccount".to_string()), + endpoint: Some("https://testaccount.file.core.windows.net".to_string()), + ..Default::default() + }), + ), + ]); + + #[cfg(feature = "services-azdls")] + test_cases.push(( + "azdls development storage", + (AzureStorageService::Adls, "UseDevelopmentStorage=true"), + Some(AzureStorageConfig::default()), // Azurite doesn't support ADLSv2, so we ignore this case + )); + for (name, (storage, conn_str), expected) in test_cases { let actual = azure_config_from_connection_string(conn_str, storage); diff --git a/core/src/raw/layer.rs b/core/src/raw/layer.rs index 86151c4e0..2d34d4956 100644 --- a/core/src/raw/layer.rs +++ b/core/src/raw/layer.rs @@ -261,7 +261,7 @@ mod tests { fn info(&self) -> Arc<AccessorInfo> { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Custom("test")); + am.set_scheme("test"); am.into() } diff --git a/core/src/services/aliyun_drive/backend.rs b/core/src/services/aliyun_drive/backend.rs index 2a1ca4893..572ffb6af 100644 --- a/core/src/services/aliyun_drive/backend.rs +++ b/core/src/services/aliyun_drive/backend.rs @@ -32,10 +32,10 @@ use super::error::parse_error; use super::lister::AliyunDriveLister; use super::lister::AliyunDriveParent; use super::writer::AliyunDriveWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::AliyunDriveConfig; use crate::*; - impl Configurator for AliyunDriveConfig { type Builder = AliyunDriveBuilder; @@ -130,7 +130,6 @@ impl AliyunDriveBuilder { } impl Builder for AliyunDriveBuilder { - const SCHEME: Scheme = Scheme::AliyunDrive; type Config = AliyunDriveConfig; fn build(self) -> Result<impl Access> { @@ -177,7 +176,7 @@ impl Builder for AliyunDriveBuilder { core: Arc::new(AliyunDriveCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::AliyunDrive) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/aliyun_drive/mod.rs b/core/src/services/aliyun_drive/mod.rs index 19c725b42..ef1862bbc 100644 --- a/core/src/services/aliyun_drive/mod.rs +++ b/core/src/services/aliyun_drive/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for aliyun_drive service. +#[cfg(feature = "services-aliyun-drive")] +pub(super) const DEFAULT_SCHEME: &str = "aliyun_drive"; #[cfg(feature = "services-aliyun-drive")] mod core; diff --git a/core/src/services/alluxio/backend.rs b/core/src/services/alluxio/backend.rs index 01c04cb49..650531b31 100644 --- a/core/src/services/alluxio/backend.rs +++ b/core/src/services/alluxio/backend.rs @@ -28,10 +28,10 @@ use super::error::parse_error; use super::lister::AlluxioLister; use super::writer::AlluxioWriter; use super::writer::AlluxioWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::AlluxioConfig; use crate::*; - impl Configurator for AlluxioConfig { type Builder = AlluxioBuilder; @@ -104,7 +104,6 @@ impl AlluxioBuilder { } impl Builder for AlluxioBuilder { - const SCHEME: Scheme = Scheme::Alluxio; type Config = AlluxioConfig; /// Builds the backend and returns the result of AlluxioBackend. @@ -126,7 +125,7 @@ impl Builder for AlluxioBuilder { core: Arc::new(AlluxioCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Alluxio) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/alluxio/mod.rs b/core/src/services/alluxio/mod.rs index 611a8a227..71cd2b0e9 100644 --- a/core/src/services/alluxio/mod.rs +++ b/core/src/services/alluxio/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for alluxio service. +#[cfg(feature = "services-alluxio")] +pub(super) const DEFAULT_SCHEME: &str = "alluxio"; #[cfg(feature = "services-alluxio")] mod core; #[cfg(feature = "services-alluxio")] diff --git a/core/src/services/azblob/backend.rs b/core/src/services/azblob/backend.rs index 4a1dfa270..c00c93a47 100644 --- a/core/src/services/azblob/backend.rs +++ b/core/src/services/azblob/backend.rs @@ -38,10 +38,10 @@ use super::error::parse_error; use super::lister::AzblobLister; use super::writer::AzblobWriter; use super::writer::AzblobWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::AzblobConfig; use crate::*; - const AZBLOB_BATCH_LIMIT: usize = 256; impl From<AzureStorageConfig> for AzblobConfig { @@ -301,7 +301,6 @@ impl AzblobBuilder { } impl Builder for AzblobBuilder { - const SCHEME: Scheme = Scheme::Azblob; type Config = AzblobConfig; fn build(self) -> Result<impl Access> { @@ -385,7 +384,7 @@ impl Builder for AzblobBuilder { core: Arc::new(AzblobCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Azblob) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_name(container) .set_native_capability(Capability { diff --git a/core/src/services/azblob/mod.rs b/core/src/services/azblob/mod.rs index c95e8b90d..818ed4628 100644 --- a/core/src/services/azblob/mod.rs +++ b/core/src/services/azblob/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for azblob service. +#[cfg(feature = "services-azblob")] +pub(super) const DEFAULT_SCHEME: &str = "azblob"; #[cfg(feature = "services-azblob")] pub(crate) mod core; #[cfg(feature = "services-azblob")] diff --git a/core/src/services/azdls/backend.rs b/core/src/services/azdls/backend.rs index e4916acf9..8413c3def 100644 --- a/core/src/services/azdls/backend.rs +++ b/core/src/services/azdls/backend.rs @@ -33,10 +33,10 @@ use super::error::parse_error; use super::lister::AzdlsLister; use super::writer::AzdlsWriter; use super::writer::AzdlsWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::AzdlsConfig; use crate::*; - impl From<AzureStorageConfig> for AzdlsConfig { fn from(config: AzureStorageConfig) -> Self { AzdlsConfig { @@ -249,7 +249,6 @@ impl AzdlsBuilder { } impl Builder for AzdlsBuilder { - const SCHEME: Scheme = Scheme::Azdls; type Config = AzdlsConfig; fn build(self) -> Result<impl Access> { @@ -296,7 +295,7 @@ impl Builder for AzdlsBuilder { core: Arc::new(AzdlsCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Azdls) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_name(filesystem) .set_native_capability(Capability { diff --git a/core/src/services/azdls/mod.rs b/core/src/services/azdls/mod.rs index 98547dd1c..643d11aad 100644 --- a/core/src/services/azdls/mod.rs +++ b/core/src/services/azdls/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for azdls service. +#[cfg(feature = "services-azdls")] +pub(super) const DEFAULT_SCHEME: &str = "azdls"; #[cfg(feature = "services-azdls")] mod backend; #[cfg(feature = "services-azdls")] diff --git a/core/src/services/azfile/backend.rs b/core/src/services/azfile/backend.rs index 725580a81..9c6f16566 100644 --- a/core/src/services/azfile/backend.rs +++ b/core/src/services/azfile/backend.rs @@ -32,10 +32,10 @@ use super::error::parse_error; use super::lister::AzfileLister; use super::writer::AzfileWriter; use super::writer::AzfileWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::AzfileConfig; use crate::*; - impl From<AzureStorageConfig> for AzfileConfig { fn from(config: AzureStorageConfig) -> Self { AzfileConfig { @@ -181,7 +181,6 @@ impl AzfileBuilder { } impl Builder for AzfileBuilder { - const SCHEME: Scheme = Scheme::Azfile; type Config = AzfileConfig; fn build(self) -> Result<impl Access> { @@ -226,7 +225,7 @@ impl Builder for AzfileBuilder { core: Arc::new(AzfileCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Azfile) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/azfile/mod.rs b/core/src/services/azfile/mod.rs index 38c9ba041..99ca22abf 100644 --- a/core/src/services/azfile/mod.rs +++ b/core/src/services/azfile/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for azfile service. +#[cfg(feature = "services-azfile")] +pub(super) const DEFAULT_SCHEME: &str = "azfile"; #[cfg(feature = "services-azfile")] mod core; #[cfg(feature = "services-azfile")] diff --git a/core/src/services/b2/backend.rs b/core/src/services/b2/backend.rs index 064e8d15d..f1674a03b 100644 --- a/core/src/services/b2/backend.rs +++ b/core/src/services/b2/backend.rs @@ -34,10 +34,10 @@ use super::error::parse_error; use super::lister::B2Lister; use super::writer::B2Writer; use super::writer::B2Writers; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::B2Config; use crate::*; - impl Configurator for B2Config { type Builder = B2Builder; @@ -136,7 +136,6 @@ impl B2Builder { } impl Builder for B2Builder { - const SCHEME: Scheme = Scheme::B2; type Config = B2Config; /// Builds the backend and returns the result of B2Backend. @@ -192,7 +191,7 @@ impl Builder for B2Builder { core: Arc::new(B2Core { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::B2) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/b2/mod.rs b/core/src/services/b2/mod.rs index 5193f960c..09c6b4bfe 100644 --- a/core/src/services/b2/mod.rs +++ b/core/src/services/b2/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for b2 service. +#[cfg(feature = "services-b2")] +pub(super) const DEFAULT_SCHEME: &str = "b2"; #[cfg(feature = "services-b2")] mod core; #[cfg(feature = "services-b2")] diff --git a/core/src/services/cacache/backend.rs b/core/src/services/cacache/backend.rs index f48610e92..5ed9f5633 100644 --- a/core/src/services/cacache/backend.rs +++ b/core/src/services/cacache/backend.rs @@ -27,7 +27,7 @@ use crate::*; use super::core::CacacheCore; use super::delete::CacacheDeleter; use super::writer::CacacheWriter; - +use super::DEFAULT_SCHEME; impl Configurator for CacacheConfig { type Builder = CacacheBuilder; fn into_builder(self) -> Self::Builder { @@ -51,7 +51,6 @@ impl CacacheBuilder { } impl Builder for CacacheBuilder { - const SCHEME: Scheme = Scheme::Cacache; type Config = CacacheConfig; fn build(self) -> Result<impl Access> { @@ -65,7 +64,7 @@ impl Builder for CacacheBuilder { }; let info = AccessorInfo::default(); - info.set_scheme(Scheme::Cacache); + info.set_scheme(DEFAULT_SCHEME); info.set_name(&datadir_path); info.set_root("/"); info.set_native_capability(Capability { diff --git a/core/src/services/cacache/mod.rs b/core/src/services/cacache/mod.rs index 79d0faa60..54f973e8d 100644 --- a/core/src/services/cacache/mod.rs +++ b/core/src/services/cacache/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for cacache service. +#[cfg(feature = "services-cacache")] +pub(super) const DEFAULT_SCHEME: &str = "cacache"; #[cfg(feature = "services-cacache")] mod backend; #[cfg(feature = "services-cacache")] diff --git a/core/src/services/cloudflare_kv/backend.rs b/core/src/services/cloudflare_kv/backend.rs index aa48cb66d..d2cbda4d0 100644 --- a/core/src/services/cloudflare_kv/backend.rs +++ b/core/src/services/cloudflare_kv/backend.rs @@ -96,7 +96,6 @@ impl CloudflareKvBuilder { } impl Builder for CloudflareKvBuilder { - const SCHEME: Scheme = Scheme::CloudflareKv; type Config = CloudflareKvConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/compfs/backend.rs b/core/src/services/compfs/backend.rs index a93270e16..86f7c835f 100644 --- a/core/src/services/compfs/backend.rs +++ b/core/src/services/compfs/backend.rs @@ -26,11 +26,11 @@ use super::delete::CompfsDeleter; use super::lister::CompfsLister; use super::reader::CompfsReader; use super::writer::CompfsWriter; +use super::DEFAULT_SCHEME; use crate::raw::oio::OneShotDeleter; use crate::raw::*; use crate::services::CompfsConfig; use crate::*; - impl Configurator for CompfsConfig { type Builder = CompfsBuilder; fn into_builder(self) -> Self::Builder { @@ -58,7 +58,6 @@ impl CompfsBuilder { } impl Builder for CompfsBuilder { - const SCHEME: Scheme = Scheme::Compfs; type Config = CompfsConfig; fn build(self) -> Result<impl Access> { @@ -91,7 +90,7 @@ impl Builder for CompfsBuilder { let core = CompfsCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Compfs) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/compfs/mod.rs b/core/src/services/compfs/mod.rs index 53b7f746f..252d67f08 100644 --- a/core/src/services/compfs/mod.rs +++ b/core/src/services/compfs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for compfs service. +#[cfg(feature = "services-compfs")] +pub(super) const DEFAULT_SCHEME: &str = "compfs"; #[cfg(feature = "services-compfs")] mod core; #[cfg(feature = "services-compfs")] diff --git a/core/src/services/cos/backend.rs b/core/src/services/cos/backend.rs index d41365121..da2d29804 100644 --- a/core/src/services/cos/backend.rs +++ b/core/src/services/cos/backend.rs @@ -34,11 +34,11 @@ use super::lister::CosListers; use super::lister::CosObjectVersionsLister; use super::writer::CosWriter; use super::writer::CosWriters; +use super::DEFAULT_SCHEME; use crate::raw::oio::PageLister; use crate::raw::*; use crate::services::CosConfig; use crate::*; - impl Configurator for CosConfig { type Builder = CosBuilder; @@ -164,7 +164,6 @@ impl CosBuilder { } impl Builder for CosBuilder { - const SCHEME: Scheme = Scheme::Cos; type Config = CosConfig; fn build(self) -> Result<impl Access> { @@ -222,7 +221,7 @@ impl Builder for CosBuilder { core: Arc::new(CosCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Cos) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_name(&bucket) .set_native_capability(Capability { diff --git a/core/src/services/cos/mod.rs b/core/src/services/cos/mod.rs index 7aff39738..486597aa2 100644 --- a/core/src/services/cos/mod.rs +++ b/core/src/services/cos/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for cos service. +#[cfg(feature = "services-cos")] +pub(super) const DEFAULT_SCHEME: &str = "cos"; #[cfg(feature = "services-cos")] mod core; #[cfg(feature = "services-cos")] diff --git a/core/src/services/d1/backend.rs b/core/src/services/d1/backend.rs index b6897aa3e..6e4705791 100644 --- a/core/src/services/d1/backend.rs +++ b/core/src/services/d1/backend.rs @@ -135,7 +135,6 @@ impl D1Builder { } impl Builder for D1Builder { - const SCHEME: Scheme = Scheme::D1; type Config = D1Config; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/dashmap/backend.rs b/core/src/services/dashmap/backend.rs index 300900785..2bffa9082 100644 --- a/core/src/services/dashmap/backend.rs +++ b/core/src/services/dashmap/backend.rs @@ -26,11 +26,11 @@ use super::core::DashmapCore; use super::delete::DashmapDeleter; use super::lister::DashmapLister; use super::writer::DashmapWriter; +use super::DEFAULT_SCHEME; use crate::raw::oio; use crate::raw::*; use crate::services::DashmapConfig; use crate::*; - impl Configurator for DashmapConfig { type Builder = DashmapBuilder; fn into_builder(self) -> Self::Builder { @@ -67,7 +67,6 @@ impl DashmapBuilder { } impl Builder for DashmapBuilder { - const SCHEME: Scheme = Scheme::Dashmap; type Config = DashmapConfig; fn build(self) -> Result<impl Access> { @@ -101,7 +100,7 @@ pub struct DashmapAccessor { impl DashmapAccessor { fn new(core: DashmapCore, root: String) -> Self { let info = AccessorInfo::default(); - info.set_scheme(Scheme::Dashmap); + info.set_scheme(DEFAULT_SCHEME); info.set_name("dashmap"); info.set_root(&root); info.set_native_capability(Capability { diff --git a/core/src/services/dashmap/mod.rs b/core/src/services/dashmap/mod.rs index 0d128063d..71356a6ca 100644 --- a/core/src/services/dashmap/mod.rs +++ b/core/src/services/dashmap/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for dashmap service. +#[cfg(feature = "services-dashmap")] +pub(super) const DEFAULT_SCHEME: &str = "dashmap"; #[cfg(feature = "services-dashmap")] mod backend; #[cfg(feature = "services-dashmap")] diff --git a/core/src/services/dbfs/backend.rs b/core/src/services/dbfs/backend.rs index 1f4bc908e..3e3babe24 100644 --- a/core/src/services/dbfs/backend.rs +++ b/core/src/services/dbfs/backend.rs @@ -29,10 +29,10 @@ use super::delete::DbfsDeleter; use super::error::parse_error; use super::lister::DbfsLister; use super::writer::DbfsWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::DbfsConfig; use crate::*; - impl Configurator for DbfsConfig { type Builder = DbfsBuilder; fn into_builder(self) -> Self::Builder { @@ -96,7 +96,6 @@ impl DbfsBuilder { } impl Builder for DbfsBuilder { - const SCHEME: Scheme = Scheme::Dbfs; type Config = DbfsConfig; /// Build a DbfsBackend. @@ -150,7 +149,7 @@ impl Access for DbfsBackend { fn info(&self) -> Arc<AccessorInfo> { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Dbfs) + am.set_scheme(DEFAULT_SCHEME) .set_root(&self.core.root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/dbfs/mod.rs b/core/src/services/dbfs/mod.rs index b2b1a470b..c76040a55 100644 --- a/core/src/services/dbfs/mod.rs +++ b/core/src/services/dbfs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for dbfs service. +#[cfg(feature = "services-dbfs")] +pub(super) const DEFAULT_SCHEME: &str = "dbfs"; #[cfg(feature = "services-dbfs")] mod core; #[cfg(feature = "services-dbfs")] diff --git a/core/src/services/dropbox/builder.rs b/core/src/services/dropbox/builder.rs index 6c7b624ce..17a39b904 100644 --- a/core/src/services/dropbox/builder.rs +++ b/core/src/services/dropbox/builder.rs @@ -26,10 +26,10 @@ use tokio::sync::Mutex; use super::backend::DropboxBackend; use super::core::DropboxCore; use super::core::DropboxSigner; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::DropboxConfig; use crate::*; - impl Configurator for DropboxConfig { type Builder = DropboxBuilder; @@ -126,7 +126,6 @@ impl DropboxBuilder { } impl Builder for DropboxBuilder { - const SCHEME: Scheme = Scheme::Dropbox; type Config = DropboxConfig; fn build(self) -> Result<impl Access> { @@ -182,7 +181,7 @@ impl Builder for DropboxBuilder { core: Arc::new(DropboxCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Dropbox) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/dropbox/mod.rs b/core/src/services/dropbox/mod.rs index 682a93074..a3c6f77d8 100644 --- a/core/src/services/dropbox/mod.rs +++ b/core/src/services/dropbox/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for dropbox service. +#[cfg(feature = "services-dropbox")] +pub(super) const DEFAULT_SCHEME: &str = "dropbox"; #[cfg(feature = "services-dropbox")] mod backend; #[cfg(feature = "services-dropbox")] diff --git a/core/src/services/etcd/backend.rs b/core/src/services/etcd/backend.rs index fb3ac36aa..01e67a2ed 100644 --- a/core/src/services/etcd/backend.rs +++ b/core/src/services/etcd/backend.rs @@ -136,7 +136,6 @@ impl EtcdBuilder { } impl Builder for EtcdBuilder { - const SCHEME: Scheme = Scheme::Etcd; type Config = EtcdConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/foundationdb/backend.rs b/core/src/services/foundationdb/backend.rs index c72099cb1..51f721ce6 100644 --- a/core/src/services/foundationdb/backend.rs +++ b/core/src/services/foundationdb/backend.rs @@ -59,7 +59,6 @@ impl FoundationdbBuilder { } impl Builder for FoundationdbBuilder { - const SCHEME: Scheme = Scheme::Foundationdb; type Config = FoundationdbConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/fs/backend.rs b/core/src/services/fs/backend.rs index d7d50107f..6e2b11a4d 100644 --- a/core/src/services/fs/backend.rs +++ b/core/src/services/fs/backend.rs @@ -26,10 +26,10 @@ use super::lister::FsLister; use super::reader::FsReader; use super::writer::FsWriter; use super::writer::FsWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::FsConfig; use crate::*; - impl Configurator for FsConfig { type Builder = FsBuilder; fn into_builder(self) -> Self::Builder { @@ -72,7 +72,6 @@ impl FsBuilder { } impl Builder for FsBuilder { - const SCHEME: Scheme = Scheme::Fs; type Config = FsConfig; fn build(self) -> Result<impl Access> { @@ -145,7 +144,7 @@ impl Builder for FsBuilder { core: Arc::new(FsCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Fs) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root.to_string_lossy()) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/fs/mod.rs b/core/src/services/fs/mod.rs index cbfefd3cf..cc5951c95 100644 --- a/core/src/services/fs/mod.rs +++ b/core/src/services/fs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for fs service. +#[cfg(feature = "services-fs")] +pub(super) const DEFAULT_SCHEME: &str = "fs"; #[cfg(feature = "services-fs")] mod core; #[cfg(feature = "services-fs")] diff --git a/core/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs index 9d4ece031..a1befc5e2 100644 --- a/core/src/services/ftp/backend.rs +++ b/core/src/services/ftp/backend.rs @@ -36,10 +36,10 @@ use super::err::parse_error; use super::lister::FtpLister; use super::reader::FtpReader; use super::writer::FtpWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::FtpConfig; use crate::*; - impl Configurator for FtpConfig { type Builder = FtpBuilder; fn into_builder(self) -> Self::Builder { @@ -109,7 +109,6 @@ impl FtpBuilder { } impl Builder for FtpBuilder { - const SCHEME: Scheme = Scheme::Ftp; type Config = FtpConfig; fn build(self) -> Result<impl Access> { @@ -162,7 +161,7 @@ impl Builder for FtpBuilder { let accessor_info = AccessorInfo::default(); accessor_info - .set_scheme(Scheme::Ftp) + .set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/ftp/mod.rs b/core/src/services/ftp/mod.rs index 0b686037e..b264a54a0 100644 --- a/core/src/services/ftp/mod.rs +++ b/core/src/services/ftp/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for ftp service. +#[cfg(feature = "services-ftp")] +pub(super) const DEFAULT_SCHEME: &str = "ftp"; #[cfg(feature = "services-ftp")] mod delete; #[cfg(feature = "services-ftp")] diff --git a/core/src/services/gcs/backend.rs b/core/src/services/gcs/backend.rs index 4cd49677f..d93efbce5 100644 --- a/core/src/services/gcs/backend.rs +++ b/core/src/services/gcs/backend.rs @@ -33,11 +33,11 @@ use super::error::parse_error; use super::lister::GcsLister; use super::writer::GcsWriter; use super::writer::GcsWriters; +use super::DEFAULT_SCHEME; use crate::raw::oio::BatchDeleter; use crate::raw::*; use crate::services::GcsConfig; use crate::*; - const DEFAULT_GCS_ENDPOINT: &str = "https://storage.googleapis.com"; const DEFAULT_GCS_SCOPE: &str = "https://www.googleapis.com/auth/devstorage.read_write"; @@ -234,7 +234,6 @@ impl GcsBuilder { } impl Builder for GcsBuilder { - const SCHEME: Scheme = Scheme::Gcs; type Config = GcsConfig; fn build(self) -> Result<impl Access> { @@ -308,7 +307,7 @@ impl Builder for GcsBuilder { core: Arc::new(GcsCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Gcs) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_name(bucket) .set_native_capability(Capability { diff --git a/core/src/services/gcs/mod.rs b/core/src/services/gcs/mod.rs index d0372f8d7..a4d5d9712 100644 --- a/core/src/services/gcs/mod.rs +++ b/core/src/services/gcs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for gcs service. +#[cfg(feature = "services-gcs")] +pub(super) const DEFAULT_SCHEME: &str = "gcs"; #[cfg(feature = "services-gcs")] mod core; #[cfg(feature = "services-gcs")] diff --git a/core/src/services/gdrive/builder.rs b/core/src/services/gdrive/builder.rs index 9e9c62b02..8fc8d84d0 100644 --- a/core/src/services/gdrive/builder.rs +++ b/core/src/services/gdrive/builder.rs @@ -28,6 +28,7 @@ use super::backend::GdriveBackend; use super::core::GdriveCore; use super::core::GdrivePathQuery; use super::core::GdriveSigner; +use super::DEFAULT_SCHEME; use crate::raw::normalize_root; use crate::raw::Access; use crate::raw::AccessorInfo; @@ -36,7 +37,6 @@ use crate::raw::PathCacher; use crate::services::GdriveConfig; use crate::Scheme; use crate::*; - impl Configurator for GdriveConfig { type Builder = GdriveBuilder; @@ -135,7 +135,6 @@ impl GdriveBuilder { } impl Builder for GdriveBuilder { - const SCHEME: Scheme = Scheme::Gdrive; type Config = GdriveConfig; fn build(self) -> Result<impl Access> { @@ -143,7 +142,7 @@ impl Builder for GdriveBuilder { debug!("backend use root {root}"); let info = AccessorInfo::default(); - info.set_scheme(Scheme::Gdrive) + info.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/gdrive/mod.rs b/core/src/services/gdrive/mod.rs index 4b6ce70fa..aa7e170f8 100644 --- a/core/src/services/gdrive/mod.rs +++ b/core/src/services/gdrive/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for gdrive service. +#[cfg(feature = "services-gdrive")] +pub(super) const DEFAULT_SCHEME: &str = "gdrive"; #[cfg(feature = "services-gdrive")] mod backend; #[cfg(feature = "services-gdrive")] diff --git a/core/src/services/ghac/backend.rs b/core/src/services/ghac/backend.rs index 08a6f6d47..ebbb081fa 100644 --- a/core/src/services/ghac/backend.rs +++ b/core/src/services/ghac/backend.rs @@ -26,11 +26,11 @@ use sha2::Digest; use super::core::*; use super::error::parse_error; use super::writer::GhacWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::ghac::core::GhacCore; use crate::services::GhacConfig; use crate::*; - fn value_or_env( explicit_value: Option<String>, env_var_name: &str, @@ -136,7 +136,6 @@ impl GhacBuilder { } impl Builder for GhacBuilder { - const SCHEME: Scheme = Scheme::Ghac; type Config = GhacConfig; fn build(self) -> Result<impl Access> { @@ -174,7 +173,7 @@ impl Builder for GhacBuilder { let core = GhacCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Ghac) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_name(&version) .set_native_capability(Capability { diff --git a/core/src/services/ghac/mod.rs b/core/src/services/ghac/mod.rs index 878f4c8c8..0b4d86229 100644 --- a/core/src/services/ghac/mod.rs +++ b/core/src/services/ghac/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for ghac service. +#[cfg(feature = "services-ghac")] +pub(super) const DEFAULT_SCHEME: &str = "ghac"; #[cfg(feature = "services-ghac")] mod error; #[cfg(feature = "services-ghac")] diff --git a/core/src/services/ghac/writer.rs b/core/src/services/ghac/writer.rs index 51bf5d5a7..e0d550753 100644 --- a/core/src/services/ghac/writer.rs +++ b/core/src/services/ghac/writer.rs @@ -68,7 +68,7 @@ impl GhacWriter { let azure_core = Arc::new(AzblobCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Azblob) + am.set_scheme("azblob") .set_root("/") .set_name(container) .set_native_capability(Capability { diff --git a/core/src/services/github/backend.rs b/core/src/services/github/backend.rs index 6830c693c..5e1968389 100644 --- a/core/src/services/github/backend.rs +++ b/core/src/services/github/backend.rs @@ -31,10 +31,10 @@ use super::error::parse_error; use super::lister::GithubLister; use super::writer::GithubWriter; use super::writer::GithubWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::GithubConfig; use crate::*; - impl Configurator for GithubConfig { type Builder = GithubBuilder; @@ -119,7 +119,6 @@ impl GithubBuilder { } impl Builder for GithubBuilder { - const SCHEME: Scheme = Scheme::Github; type Config = GithubConfig; /// Builds the backend and returns the result of GithubBackend. @@ -151,7 +150,7 @@ impl Builder for GithubBuilder { core: Arc::new(GithubCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Github) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/github/mod.rs b/core/src/services/github/mod.rs index d0ae3eda9..7d7fda699 100644 --- a/core/src/services/github/mod.rs +++ b/core/src/services/github/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for github service. +#[cfg(feature = "services-github")] +pub(super) const DEFAULT_SCHEME: &str = "github"; #[cfg(feature = "services-github")] mod core; #[cfg(feature = "services-github")] diff --git a/core/src/services/gridfs/backend.rs b/core/src/services/gridfs/backend.rs index 9edb239d9..bd24007b2 100644 --- a/core/src/services/gridfs/backend.rs +++ b/core/src/services/gridfs/backend.rs @@ -119,7 +119,6 @@ impl GridfsBuilder { } impl Builder for GridfsBuilder { - const SCHEME: Scheme = Scheme::Gridfs; type Config = GridfsConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/hdfs/backend.rs b/core/src/services/hdfs/backend.rs index 81e287228..e549d9850 100644 --- a/core/src/services/hdfs/backend.rs +++ b/core/src/services/hdfs/backend.rs @@ -28,10 +28,10 @@ use super::delete::HdfsDeleter; use super::lister::HdfsLister; use super::reader::HdfsReader; use super::writer::HdfsWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::HdfsConfig; use crate::*; - impl Configurator for HdfsConfig { type Builder = HdfsBuilder; fn into_builder(self) -> Self::Builder { @@ -125,7 +125,6 @@ impl HdfsBuilder { } impl Builder for HdfsBuilder { - const SCHEME: Scheme = Scheme::Hdfs; type Config = HdfsConfig; fn build(self) -> Result<impl Access> { @@ -175,7 +174,7 @@ impl Builder for HdfsBuilder { Ok(HdfsBackend { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Hdfs) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/hdfs/mod.rs b/core/src/services/hdfs/mod.rs index e93e2776c..3ffbcb033 100644 --- a/core/src/services/hdfs/mod.rs +++ b/core/src/services/hdfs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for hdfs service. +#[cfg(feature = "services-hdfs")] +pub(super) const DEFAULT_SCHEME: &str = "hdfs"; #[cfg(feature = "services-hdfs")] mod delete; #[cfg(feature = "services-hdfs")] diff --git a/core/src/services/hdfs_native/backend.rs b/core/src/services/hdfs_native/backend.rs index 99e485739..bd71fd2d7 100644 --- a/core/src/services/hdfs_native/backend.rs +++ b/core/src/services/hdfs_native/backend.rs @@ -28,10 +28,10 @@ use super::error::parse_hdfs_error; use super::lister::HdfsNativeLister; use super::reader::HdfsNativeReader; use super::writer::HdfsNativeWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::HdfsNativeConfig; use crate::*; - /// [Hadoop Distributed File System (HDFS™)](https://hadoop.apache.org/) support. /// Using [Native Rust HDFS client](https://github.com/Kimahriman/hdfs-native). impl Configurator for HdfsNativeConfig { @@ -94,7 +94,6 @@ impl HdfsNativeBuilder { } impl Builder for HdfsNativeBuilder { - const SCHEME: Scheme = Scheme::HdfsNative; type Config = HdfsNativeConfig; fn build(self) -> Result<impl Access> { @@ -150,7 +149,7 @@ impl Access for HdfsNativeBackend { fn info(&self) -> Arc<AccessorInfo> { let am = AccessorInfo::default(); - am.set_scheme(Scheme::HdfsNative) + am.set_scheme(DEFAULT_SCHEME) .set_root(&self.root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/hdfs_native/mod.rs b/core/src/services/hdfs_native/mod.rs index 071f45dfb..4c9c1ff02 100644 --- a/core/src/services/hdfs_native/mod.rs +++ b/core/src/services/hdfs_native/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for hdfs_native service. +#[cfg(feature = "services-hdfs-native")] +pub(super) const DEFAULT_SCHEME: &str = "hdfs_native"; #[cfg(feature = "services-hdfs-native")] mod delete; #[cfg(feature = "services-hdfs-native")] diff --git a/core/src/services/http/backend.rs b/core/src/services/http/backend.rs index 0ee448a7e..1f4eeb61a 100644 --- a/core/src/services/http/backend.rs +++ b/core/src/services/http/backend.rs @@ -25,10 +25,10 @@ use log::debug; use super::core::HttpCore; use super::error::parse_error; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::HttpConfig; use crate::*; - impl Configurator for HttpConfig { type Builder = HttpBuilder; @@ -129,7 +129,6 @@ impl HttpBuilder { } impl Builder for HttpBuilder { - const SCHEME: Scheme = Scheme::Http; type Config = HttpConfig; fn build(self) -> Result<impl Access> { @@ -158,7 +157,7 @@ impl Builder for HttpBuilder { } let info = AccessorInfo::default(); - info.set_scheme(Scheme::Http) + info.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/http/mod.rs b/core/src/services/http/mod.rs index fef894ef1..923d25588 100644 --- a/core/src/services/http/mod.rs +++ b/core/src/services/http/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for http service. +#[cfg(feature = "services-http")] +pub(super) const DEFAULT_SCHEME: &str = "http"; #[cfg(feature = "services-http")] mod error; diff --git a/core/src/services/huggingface/backend.rs b/core/src/services/huggingface/backend.rs index 43aad0156..2c7c436e0 100644 --- a/core/src/services/huggingface/backend.rs +++ b/core/src/services/huggingface/backend.rs @@ -28,10 +28,10 @@ use super::core::HuggingfaceCore; use super::core::HuggingfaceStatus; use super::error::parse_error; use super::lister::HuggingfaceLister; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::HuggingfaceConfig; use crate::*; - impl Configurator for HuggingfaceConfig { type Builder = HuggingfaceBuilder; fn into_builder(self) -> Self::Builder { @@ -126,7 +126,6 @@ impl HuggingfaceBuilder { } impl Builder for HuggingfaceBuilder { - const SCHEME: Scheme = Scheme::Huggingface; type Config = HuggingfaceConfig; /// Build a HuggingfaceBackend. @@ -173,7 +172,7 @@ impl Builder for HuggingfaceBuilder { core: Arc::new(HuggingfaceCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Huggingface) + am.set_scheme(DEFAULT_SCHEME) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/huggingface/mod.rs b/core/src/services/huggingface/mod.rs index 011fba471..bcf7ff9d7 100644 --- a/core/src/services/huggingface/mod.rs +++ b/core/src/services/huggingface/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for huggingface service. +#[cfg(feature = "services-huggingface")] +pub(super) const DEFAULT_SCHEME: &str = "huggingface"; #[cfg(feature = "services-huggingface")] mod core; #[cfg(feature = "services-huggingface")] diff --git a/core/src/services/ipfs/backend.rs b/core/src/services/ipfs/backend.rs index c8877c6cf..39df3a2ee 100644 --- a/core/src/services/ipfs/backend.rs +++ b/core/src/services/ipfs/backend.rs @@ -27,10 +27,10 @@ use prost::Message; use super::core::IpfsCore; use super::error::parse_error; use super::ipld::PBNode; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::IpfsConfig; use crate::*; - impl Configurator for IpfsConfig { type Builder = IpfsBuilder; @@ -106,7 +106,6 @@ impl IpfsBuilder { } impl Builder for IpfsBuilder { - const SCHEME: Scheme = Scheme::Ipfs; type Config = IpfsConfig; fn build(self) -> Result<impl Access> { @@ -132,7 +131,7 @@ impl Builder for IpfsBuilder { debug!("backend use endpoint {}", &endpoint); let info = AccessorInfo::default(); - info.set_scheme(Scheme::Ipfs) + info.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/ipfs/mod.rs b/core/src/services/ipfs/mod.rs index ade100c5f..93617c2ba 100644 --- a/core/src/services/ipfs/mod.rs +++ b/core/src/services/ipfs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for ipfs service. +#[cfg(feature = "services-ipfs")] +pub(super) const DEFAULT_SCHEME: &str = "ipfs"; #[cfg(feature = "services-ipfs")] mod error; #[cfg(feature = "services-ipfs")] diff --git a/core/src/services/ipmfs/builder.rs b/core/src/services/ipmfs/builder.rs index f87fa2715..024d67f7e 100644 --- a/core/src/services/ipmfs/builder.rs +++ b/core/src/services/ipmfs/builder.rs @@ -21,10 +21,10 @@ use log::debug; use super::backend::IpmfsBackend; use super::core::IpmfsCore; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::IpmfsConfig; use crate::*; - impl Configurator for IpmfsConfig { type Builder = IpmfsBuilder; @@ -124,7 +124,6 @@ impl IpmfsBuilder { } impl Builder for IpmfsBuilder { - const SCHEME: Scheme = Scheme::Ipmfs; type Config = IpmfsConfig; fn build(self) -> Result<impl Access> { @@ -138,7 +137,7 @@ impl Builder for IpmfsBuilder { .unwrap_or_else(|| "http://localhost:5001".to_string()); let info = AccessorInfo::default(); - info.set_scheme(Scheme::Ipmfs) + info.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/ipmfs/mod.rs b/core/src/services/ipmfs/mod.rs index ca70f362b..4fe389028 100644 --- a/core/src/services/ipmfs/mod.rs +++ b/core/src/services/ipmfs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for ipmfs service. +#[cfg(feature = "services-ipmfs")] +pub(super) const DEFAULT_SCHEME: &str = "ipmfs"; #[cfg(feature = "services-ipmfs")] mod backend; #[cfg(feature = "services-ipmfs")] diff --git a/core/src/services/koofr/backend.rs b/core/src/services/koofr/backend.rs index 99b7b8d19..2c9f64bb4 100644 --- a/core/src/services/koofr/backend.rs +++ b/core/src/services/koofr/backend.rs @@ -34,10 +34,10 @@ use super::error::parse_error; use super::lister::KoofrLister; use super::writer::KoofrWriter; use super::writer::KoofrWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::KoofrConfig; use crate::*; - impl Configurator for KoofrConfig { type Builder = KoofrBuilder; @@ -136,7 +136,6 @@ impl KoofrBuilder { } impl Builder for KoofrBuilder { - const SCHEME: Scheme = Scheme::Koofr; type Config = KoofrConfig; /// Builds the backend and returns the result of KoofrBackend. @@ -175,7 +174,7 @@ impl Builder for KoofrBuilder { core: Arc::new(KoofrCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Koofr) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/koofr/mod.rs b/core/src/services/koofr/mod.rs index 255d6ff72..2339b6e0b 100644 --- a/core/src/services/koofr/mod.rs +++ b/core/src/services/koofr/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for koofr service. +#[cfg(feature = "services-koofr")] +pub(super) const DEFAULT_SCHEME: &str = "koofr"; #[cfg(feature = "services-koofr")] mod core; #[cfg(feature = "services-koofr")] diff --git a/core/src/services/lakefs/backend.rs b/core/src/services/lakefs/backend.rs index 732251841..ebd0b72ee 100644 --- a/core/src/services/lakefs/backend.rs +++ b/core/src/services/lakefs/backend.rs @@ -32,10 +32,10 @@ use super::delete::LakefsDeleter; use super::error::parse_error; use super::lister::LakefsLister; use super::writer::LakefsWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::LakefsConfig; use crate::*; - impl Configurator for LakefsConfig { type Builder = LakefsBuilder; fn into_builder(self) -> Self::Builder { @@ -126,7 +126,6 @@ impl LakefsBuilder { } impl Builder for LakefsBuilder { - const SCHEME: Scheme = Scheme::Lakefs; type Config = LakefsConfig; /// Build a LakefsBackend. @@ -176,7 +175,7 @@ impl Builder for LakefsBuilder { core: Arc::new(LakefsCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Lakefs) + am.set_scheme(DEFAULT_SCHEME) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/lakefs/mod.rs b/core/src/services/lakefs/mod.rs index 01d161d46..0183e3d84 100644 --- a/core/src/services/lakefs/mod.rs +++ b/core/src/services/lakefs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for lakefs service. +#[cfg(feature = "services-lakefs")] +pub(super) const DEFAULT_SCHEME: &str = "lakefs"; #[cfg(feature = "services-lakefs")] mod core; #[cfg(feature = "services-lakefs")] diff --git a/core/src/services/memcached/backend.rs b/core/src/services/memcached/backend.rs index caa29cff1..23e5d2870 100644 --- a/core/src/services/memcached/backend.rs +++ b/core/src/services/memcached/backend.rs @@ -85,7 +85,6 @@ impl MemcachedBuilder { } impl Builder for MemcachedBuilder { - const SCHEME: Scheme = Scheme::Memcached; type Config = MemcachedConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/memory/backend.rs b/core/src/services/memory/backend.rs index 48f5e07df..8c2b4b55f 100644 --- a/core/src/services/memory/backend.rs +++ b/core/src/services/memory/backend.rs @@ -22,11 +22,11 @@ use super::core::*; use super::delete::MemoryDeleter; use super::lister::MemoryLister; use super::writer::MemoryWriter; +use super::DEFAULT_SCHEME; use crate::raw::oio; use crate::raw::*; use crate::services::MemoryConfig; use crate::*; - impl Configurator for MemoryConfig { type Builder = MemoryBuilder; fn into_builder(self) -> Self::Builder { @@ -50,7 +50,6 @@ impl MemoryBuilder { } impl Builder for MemoryBuilder { - const SCHEME: Scheme = Scheme::Memory; type Config = MemoryConfig; fn build(self) -> Result<impl Access> { @@ -72,7 +71,7 @@ pub struct MemoryAccessor { impl MemoryAccessor { fn new(core: MemoryCore) -> Self { let info = AccessorInfo::default(); - info.set_scheme(Scheme::Memory); + info.set_scheme(DEFAULT_SCHEME); info.set_name(&format!("{:p}", Arc::as_ptr(&core.data))); info.set_root("/"); info.set_native_capability(Capability { diff --git a/core/src/services/memory/mod.rs b/core/src/services/memory/mod.rs index cefcd972a..ef5c3f5eb 100644 --- a/core/src/services/memory/mod.rs +++ b/core/src/services/memory/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for memory service. +#[cfg(feature = "services-memory")] +pub(super) const DEFAULT_SCHEME: &str = "memory"; #[cfg(feature = "services-memory")] mod backend; #[cfg(feature = "services-memory")] diff --git a/core/src/services/mini_moka/backend.rs b/core/src/services/mini_moka/backend.rs index 042c627ed..2b28e468c 100644 --- a/core/src/services/mini_moka/backend.rs +++ b/core/src/services/mini_moka/backend.rs @@ -26,12 +26,12 @@ use super::core::*; use super::delete::MiniMokaDeleter; use super::lister::MiniMokaLister; use super::writer::MiniMokaWriter; +use super::DEFAULT_SCHEME; use crate::raw::oio; use crate::raw::oio::HierarchyLister; use crate::raw::*; use crate::services::MiniMokaConfig; use crate::*; - impl Configurator for MiniMokaConfig { type Builder = MiniMokaBuilder; fn into_builder(self) -> Self::Builder { @@ -103,7 +103,6 @@ impl MiniMokaBuilder { } impl Builder for MiniMokaBuilder { - const SCHEME: Scheme = Scheme::MiniMoka; type Config = MiniMokaConfig; fn build(self) -> Result<impl Access> { @@ -156,7 +155,7 @@ impl Access for MiniMokaBackend { fn info(&self) -> Arc<AccessorInfo> { let info = AccessorInfo::default(); - info.set_scheme(Scheme::MiniMoka) + info.set_scheme(DEFAULT_SCHEME) .set_root(&self.root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/mini_moka/mod.rs b/core/src/services/mini_moka/mod.rs index d6ac055cb..cff46e241 100644 --- a/core/src/services/mini_moka/mod.rs +++ b/core/src/services/mini_moka/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for mini_moka service. +#[cfg(feature = "services-mini-moka")] +pub(super) const DEFAULT_SCHEME: &str = "mini_moka"; #[cfg(feature = "services-mini-moka")] mod backend; #[cfg(feature = "services-mini-moka")] diff --git a/core/src/services/moka/backend.rs b/core/src/services/moka/backend.rs index a685ca12e..bf7181ddd 100644 --- a/core/src/services/moka/backend.rs +++ b/core/src/services/moka/backend.rs @@ -26,11 +26,11 @@ use super::core::*; use super::delete::MokaDeleter; use super::lister::MokaLister; use super::writer::MokaWriter; +use super::DEFAULT_SCHEME; use crate::raw::oio; use crate::raw::*; use crate::services::MokaConfig; use crate::*; - impl Configurator for MokaConfig { type Builder = MokaBuilder; fn into_builder(self) -> Self::Builder { @@ -151,7 +151,6 @@ impl MokaBuilder { } impl Builder for MokaBuilder { - const SCHEME: Scheme = Scheme::Moka; type Config = MokaConfig; fn build(self) -> Result<impl Access> { @@ -203,7 +202,7 @@ pub struct MokaAccessor { impl MokaAccessor { fn new(core: MokaCore) -> Self { let info = AccessorInfo::default(); - info.set_scheme(Scheme::Moka); + info.set_scheme(DEFAULT_SCHEME); info.set_name(core.cache.name().unwrap_or("moka")); info.set_root("/"); info.set_native_capability(Capability { diff --git a/core/src/services/moka/mod.rs b/core/src/services/moka/mod.rs index c8acb8f23..ccbeb0cc2 100644 --- a/core/src/services/moka/mod.rs +++ b/core/src/services/moka/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for moka service. +#[cfg(feature = "services-moka")] +pub(super) const DEFAULT_SCHEME: &str = "moka"; #[cfg(feature = "services-moka")] mod backend; #[cfg(feature = "services-moka")] diff --git a/core/src/services/mongodb/backend.rs b/core/src/services/mongodb/backend.rs index a3edd88df..442b7d958 100644 --- a/core/src/services/mongodb/backend.rs +++ b/core/src/services/mongodb/backend.rs @@ -128,7 +128,6 @@ impl MongodbBuilder { } impl Builder for MongodbBuilder { - const SCHEME: Scheme = Scheme::Mongodb; type Config = MongodbConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/monoiofs/backend.rs b/core/src/services/monoiofs/backend.rs index 0894f133f..ad2833fa4 100644 --- a/core/src/services/monoiofs/backend.rs +++ b/core/src/services/monoiofs/backend.rs @@ -61,7 +61,6 @@ impl MonoiofsBuilder { } impl Builder for MonoiofsBuilder { - const SCHEME: Scheme = Scheme::Monoiofs; type Config = MonoiofsConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/monoiofs/core.rs b/core/src/services/monoiofs/core.rs index 0428719cb..830d32df5 100644 --- a/core/src/services/monoiofs/core.rs +++ b/core/src/services/monoiofs/core.rs @@ -28,9 +28,9 @@ use futures::Future; use monoio::FusionDriver; use monoio::RuntimeBuilder; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::*; - pub const BUFFER_SIZE: usize = 2 * 1024 * 1024; // 2 MiB /// a boxed function that spawns task in current monoio runtime @@ -69,7 +69,7 @@ impl MonoiofsCore { Self { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Monoiofs) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root.to_string_lossy()) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/monoiofs/mod.rs b/core/src/services/monoiofs/mod.rs index e16954881..9dbcb06f9 100644 --- a/core/src/services/monoiofs/mod.rs +++ b/core/src/services/monoiofs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for monoiofs service. +#[cfg(feature = "services-monoiofs")] +pub(super) const DEFAULT_SCHEME: &str = "monoiofs"; #[cfg(feature = "services-monoiofs")] mod core; #[cfg(feature = "services-monoiofs")] diff --git a/core/src/services/mysql/backend.rs b/core/src/services/mysql/backend.rs index ad4ad4374..120ae4b58 100644 --- a/core/src/services/mysql/backend.rs +++ b/core/src/services/mysql/backend.rs @@ -113,7 +113,6 @@ impl MysqlBuilder { } impl Builder for MysqlBuilder { - const SCHEME: Scheme = Scheme::Mysql; type Config = MysqlConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/obs/backend.rs b/core/src/services/obs/backend.rs index e88607f08..88e5f350d 100644 --- a/core/src/services/obs/backend.rs +++ b/core/src/services/obs/backend.rs @@ -35,10 +35,10 @@ use super::error::parse_error; use super::lister::ObsLister; use super::writer::ObsWriter; use super::writer::ObsWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::ObsConfig; use crate::*; - impl Configurator for ObsConfig { type Builder = ObsBuilder; @@ -154,7 +154,6 @@ impl ObsBuilder { } impl Builder for ObsBuilder { - const SCHEME: Scheme = Scheme::Obs; type Config = ObsConfig; fn build(self) -> Result<impl Access> { @@ -233,7 +232,7 @@ impl Builder for ObsBuilder { core: Arc::new(ObsCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Obs) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_name(&bucket) .set_native_capability(Capability { diff --git a/core/src/services/obs/mod.rs b/core/src/services/obs/mod.rs index 3427da280..ed94697a1 100644 --- a/core/src/services/obs/mod.rs +++ b/core/src/services/obs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for obs service. +#[cfg(feature = "services-obs")] +pub(super) const DEFAULT_SCHEME: &str = "obs"; #[cfg(feature = "services-obs")] mod core; #[cfg(feature = "services-obs")] diff --git a/core/src/services/onedrive/builder.rs b/core/src/services/onedrive/builder.rs index 4d2d4c91d..85e969b1a 100644 --- a/core/src/services/onedrive/builder.rs +++ b/core/src/services/onedrive/builder.rs @@ -27,6 +27,7 @@ use services::onedrive::core::OneDriveSigner; use tokio::sync::Mutex; use super::backend::OnedriveBackend; +use super::DEFAULT_SCHEME; use crate::raw::normalize_root; use crate::raw::Access; use crate::raw::AccessorInfo; @@ -34,7 +35,6 @@ use crate::raw::HttpClient; use crate::services::OnedriveConfig; use crate::Scheme; use crate::*; - impl Configurator for OnedriveConfig { type Builder = OnedriveBuilder; fn into_builder(self) -> Self::Builder { @@ -137,7 +137,6 @@ impl OnedriveBuilder { } impl Builder for OnedriveBuilder { - const SCHEME: Scheme = Scheme::Onedrive; type Config = OnedriveConfig; fn build(self) -> Result<impl Access> { @@ -145,7 +144,7 @@ impl Builder for OnedriveBuilder { debug!("backend use root {root}"); let info = AccessorInfo::default(); - info.set_scheme(Scheme::Onedrive) + info.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { read: true, diff --git a/core/src/services/onedrive/mod.rs b/core/src/services/onedrive/mod.rs index fadcfc9cb..cd1a892b4 100644 --- a/core/src/services/onedrive/mod.rs +++ b/core/src/services/onedrive/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for onedrive service. +#[cfg(feature = "services-onedrive")] +pub(super) const DEFAULT_SCHEME: &str = "onedrive"; #[cfg(feature = "services-onedrive")] mod backend; #[cfg(feature = "services-onedrive")] diff --git a/core/src/services/oss/backend.rs b/core/src/services/oss/backend.rs index ec6ea73c0..b87502425 100644 --- a/core/src/services/oss/backend.rs +++ b/core/src/services/oss/backend.rs @@ -35,10 +35,10 @@ use super::lister::OssListers; use super::lister::OssObjectVersionsLister; use super::writer::OssWriter; use super::writer::OssWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::OssConfig; use crate::*; - const DEFAULT_BATCH_MAX_OPERATIONS: usize = 1000; impl Configurator for OssConfig { @@ -318,7 +318,6 @@ impl OssBuilder { } impl Builder for OssBuilder { - const SCHEME: Scheme = Scheme::Oss; type Config = OssConfig; fn build(self) -> Result<impl Access> { @@ -411,7 +410,7 @@ impl Builder for OssBuilder { core: Arc::new(OssCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Oss) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_name(bucket) .set_native_capability(Capability { diff --git a/core/src/services/oss/mod.rs b/core/src/services/oss/mod.rs index 19b280e7b..e27e6a78b 100644 --- a/core/src/services/oss/mod.rs +++ b/core/src/services/oss/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for oss service. +#[cfg(feature = "services-oss")] +pub(super) const DEFAULT_SCHEME: &str = "oss"; #[cfg(feature = "services-oss")] mod core; #[cfg(feature = "services-oss")] diff --git a/core/src/services/pcloud/backend.rs b/core/src/services/pcloud/backend.rs index 6caaaeb4c..7c84f3b72 100644 --- a/core/src/services/pcloud/backend.rs +++ b/core/src/services/pcloud/backend.rs @@ -31,10 +31,10 @@ use super::error::PcloudError; use super::lister::PcloudLister; use super::writer::PcloudWriter; use super::writer::PcloudWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::PcloudConfig; use crate::*; - impl Configurator for PcloudConfig { type Builder = PcloudBuilder; @@ -132,7 +132,6 @@ impl PcloudBuilder { } impl Builder for PcloudBuilder { - const SCHEME: Scheme = Scheme::Pcloud; type Config = PcloudConfig; /// Builds the backend and returns the result of PcloudBackend. @@ -169,7 +168,7 @@ impl Builder for PcloudBuilder { core: Arc::new(PcloudCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Pcloud) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/pcloud/mod.rs b/core/src/services/pcloud/mod.rs index f42bdc162..139528f7f 100644 --- a/core/src/services/pcloud/mod.rs +++ b/core/src/services/pcloud/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for pcloud service. +#[cfg(feature = "services-pcloud")] +pub(super) const DEFAULT_SCHEME: &str = "pcloud"; #[cfg(feature = "services-pcloud")] mod core; #[cfg(feature = "services-pcloud")] diff --git a/core/src/services/persy/backend.rs b/core/src/services/persy/backend.rs index 934db41c8..f1cfdc725 100644 --- a/core/src/services/persy/backend.rs +++ b/core/src/services/persy/backend.rs @@ -65,7 +65,6 @@ impl PersyBuilder { } impl Builder for PersyBuilder { - const SCHEME: Scheme = Scheme::Persy; type Config = PersyConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/postgresql/backend.rs b/core/src/services/postgresql/backend.rs index ab4570909..1214c3351 100644 --- a/core/src/services/postgresql/backend.rs +++ b/core/src/services/postgresql/backend.rs @@ -112,7 +112,6 @@ impl PostgresqlBuilder { } impl Builder for PostgresqlBuilder { - const SCHEME: Scheme = Scheme::Postgresql; type Config = PostgresqlConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/redb/backend.rs b/core/src/services/redb/backend.rs index 31de507db..18c3d0b26 100644 --- a/core/src/services/redb/backend.rs +++ b/core/src/services/redb/backend.rs @@ -97,7 +97,6 @@ impl RedbBuilder { } impl Builder for RedbBuilder { - const SCHEME: Scheme = Scheme::Redb; type Config = RedbConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/redis/backend.rs b/core/src/services/redis/backend.rs index e6817c493..db5def362 100644 --- a/core/src/services/redis/backend.rs +++ b/core/src/services/redis/backend.rs @@ -32,11 +32,11 @@ use tokio::sync::OnceCell; use super::core::*; use super::delete::RedisDeleter; use super::writer::RedisWriter; +use super::DEFAULT_SCHEME; use crate::raw::oio; use crate::raw::*; use crate::services::RedisConfig; use crate::*; - const DEFAULT_REDIS_ENDPOINT: &str = "tcp://127.0.0.1:6379"; const DEFAULT_REDIS_PORT: u16 = 6379; @@ -144,7 +144,6 @@ impl RedisBuilder { } impl Builder for RedisBuilder { - const SCHEME: Scheme = Scheme::Redis; type Config = RedisConfig; fn build(self) -> Result<impl Access> { @@ -278,7 +277,7 @@ pub struct RedisAccessor { impl RedisAccessor { fn new(core: RedisCore) -> Self { let info = AccessorInfo::default(); - info.set_scheme(Scheme::Redis); + info.set_scheme(DEFAULT_SCHEME); info.set_name(&core.addr); info.set_root("/"); info.set_native_capability(Capability { @@ -396,7 +395,7 @@ mod tests { // Verify basic properties assert_eq!(accessor.root, "/"); - assert_eq!(accessor.info.scheme(), Scheme::Redis); + assert_eq!(accessor.info.scheme(), "redis"); assert!(accessor.info.native_capability().read); assert!(accessor.info.native_capability().write); assert!(accessor.info.native_capability().delete); diff --git a/core/src/services/redis/mod.rs b/core/src/services/redis/mod.rs index 3d8975fae..dc187886b 100644 --- a/core/src/services/redis/mod.rs +++ b/core/src/services/redis/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for redis service. +#[cfg(feature = "services-redis")] +pub(super) const DEFAULT_SCHEME: &str = "redis"; #[cfg(feature = "services-redis")] mod backend; #[cfg(feature = "services-redis")] diff --git a/core/src/services/rocksdb/backend.rs b/core/src/services/rocksdb/backend.rs index 68c481ba5..bba240434 100644 --- a/core/src/services/rocksdb/backend.rs +++ b/core/src/services/rocksdb/backend.rs @@ -63,7 +63,6 @@ impl RocksdbBuilder { } impl Builder for RocksdbBuilder { - const SCHEME: Scheme = Scheme::Rocksdb; type Config = RocksdbConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs index a36ff1a41..292e90690 100644 --- a/core/src/services/s3/backend.rs +++ b/core/src/services/s3/backend.rs @@ -50,6 +50,7 @@ use super::lister::S3Listers; use super::lister::S3ObjectVersionsLister; use super::writer::S3Writer; use super::writer::S3Writers; +use super::DEFAULT_SCHEME; use crate::raw::oio::PageLister; use crate::raw::*; use crate::services::S3Config; @@ -716,7 +717,6 @@ impl S3Builder { } impl Builder for S3Builder { - const SCHEME: Scheme = Scheme::S3; type Config = S3Config; fn build(mut self) -> Result<impl Access> { @@ -904,7 +904,7 @@ impl Builder for S3Builder { core: Arc::new(S3Core { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::S3) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_name(bucket) .set_native_capability(Capability { diff --git a/core/src/services/s3/mod.rs b/core/src/services/s3/mod.rs index 587a171e6..44f4a3982 100644 --- a/core/src/services/s3/mod.rs +++ b/core/src/services/s3/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for s3 service. +#[cfg(feature = "services-s3")] +pub(super) const DEFAULT_SCHEME: &str = "s3"; #[cfg(feature = "services-s3")] mod core; #[cfg(feature = "services-s3")] diff --git a/core/src/services/seafile/backend.rs b/core/src/services/seafile/backend.rs index 5c1dc21a5..43044e372 100644 --- a/core/src/services/seafile/backend.rs +++ b/core/src/services/seafile/backend.rs @@ -33,10 +33,10 @@ use super::error::parse_error; use super::lister::SeafileLister; use super::writer::SeafileWriter; use super::writer::SeafileWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::SeafileConfig; use crate::*; - impl Configurator for SeafileConfig { type Builder = SeafileBuilder; @@ -145,7 +145,6 @@ impl SeafileBuilder { } impl Builder for SeafileBuilder { - const SCHEME: Scheme = Scheme::Seafile; type Config = SeafileConfig; /// Builds the backend and returns the result of SeafileBackend. @@ -189,7 +188,7 @@ impl Builder for SeafileBuilder { core: Arc::new(SeafileCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Seafile) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/seafile/mod.rs b/core/src/services/seafile/mod.rs index 56c44acdd..e08c059cb 100644 --- a/core/src/services/seafile/mod.rs +++ b/core/src/services/seafile/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for seafile service. +#[cfg(feature = "services-seafile")] +pub(super) const DEFAULT_SCHEME: &str = "seafile"; #[cfg(feature = "services-seafile")] mod core; #[cfg(feature = "services-seafile")] diff --git a/core/src/services/sftp/backend.rs b/core/src/services/sftp/backend.rs index 96c5fa60d..93e31a128 100644 --- a/core/src/services/sftp/backend.rs +++ b/core/src/services/sftp/backend.rs @@ -35,10 +35,10 @@ use super::error::parse_sftp_error; use super::lister::SftpLister; use super::reader::SftpReader; use super::writer::SftpWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::SftpConfig; use crate::*; - impl Configurator for SftpConfig { type Builder = SftpBuilder; fn into_builder(self) -> Self::Builder { @@ -141,7 +141,6 @@ impl SftpBuilder { } impl Builder for SftpBuilder { - const SCHEME: Scheme = Scheme::Sftp; type Config = SftpConfig; fn build(self) -> Result<impl Access> { @@ -181,7 +180,7 @@ impl Builder for SftpBuilder { let info = AccessorInfo::default(); info.set_root(root.as_str()) - .set_scheme(Scheme::Sftp) + .set_scheme(DEFAULT_SCHEME) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/sftp/mod.rs b/core/src/services/sftp/mod.rs index e3de30916..537edfd3e 100644 --- a/core/src/services/sftp/mod.rs +++ b/core/src/services/sftp/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for sftp service. +#[cfg(feature = "services-sftp")] +pub(super) const DEFAULT_SCHEME: &str = "sftp"; #[cfg(feature = "services-sftp")] mod delete; #[cfg(feature = "services-sftp")] diff --git a/core/src/services/sled/backend.rs b/core/src/services/sled/backend.rs index 3e366f363..7f9dd7306 100644 --- a/core/src/services/sled/backend.rs +++ b/core/src/services/sled/backend.rs @@ -79,7 +79,6 @@ impl SledBuilder { } impl Builder for SledBuilder { - const SCHEME: Scheme = Scheme::Sled; type Config = SledConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/sqlite/backend.rs b/core/src/services/sqlite/backend.rs index cfda82bc1..5fac36b4d 100644 --- a/core/src/services/sqlite/backend.rs +++ b/core/src/services/sqlite/backend.rs @@ -121,7 +121,6 @@ impl SqliteBuilder { } impl Builder for SqliteBuilder { - const SCHEME: Scheme = Scheme::Sqlite; type Config = SqliteConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/surrealdb/backend.rs b/core/src/services/surrealdb/backend.rs index 3026a9c4e..8192815fb 100644 --- a/core/src/services/surrealdb/backend.rs +++ b/core/src/services/surrealdb/backend.rs @@ -144,7 +144,6 @@ impl SurrealdbBuilder { } impl Builder for SurrealdbBuilder { - const SCHEME: Scheme = Scheme::Surrealdb; type Config = SurrealdbConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/swift/backend.rs b/core/src/services/swift/backend.rs index d48704b84..3320d98db 100644 --- a/core/src/services/swift/backend.rs +++ b/core/src/services/swift/backend.rs @@ -28,10 +28,10 @@ use super::delete::SwfitDeleter; use super::error::parse_error; use super::lister::SwiftLister; use super::writer::SwiftWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::SwiftConfig; use crate::*; - impl Configurator for SwiftConfig { type Builder = SwiftBuilder; fn into_builder(self) -> Self::Builder { @@ -113,7 +113,6 @@ impl SwiftBuilder { } impl Builder for SwiftBuilder { - const SCHEME: Scheme = Scheme::Swift; type Config = SwiftConfig; /// Build a SwiftBackend. @@ -156,7 +155,7 @@ impl Builder for SwiftBuilder { core: Arc::new(SwiftCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Swift) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/swift/mod.rs b/core/src/services/swift/mod.rs index 244d8f915..0928a0132 100644 --- a/core/src/services/swift/mod.rs +++ b/core/src/services/swift/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for swift service. +#[cfg(feature = "services-swift")] +pub(super) const DEFAULT_SCHEME: &str = "swift"; #[cfg(feature = "services-swift")] mod core; #[cfg(feature = "services-swift")] diff --git a/core/src/services/tikv/backend.rs b/core/src/services/tikv/backend.rs index 799a811a7..77789087c 100644 --- a/core/src/services/tikv/backend.rs +++ b/core/src/services/tikv/backend.rs @@ -96,7 +96,6 @@ impl TikvBuilder { } impl Builder for TikvBuilder { - const SCHEME: Scheme = Scheme::Tikv; type Config = TikvConfig; fn build(self) -> Result<impl Access> { diff --git a/core/src/services/upyun/backend.rs b/core/src/services/upyun/backend.rs index 1548bf83d..5154f6f83 100644 --- a/core/src/services/upyun/backend.rs +++ b/core/src/services/upyun/backend.rs @@ -29,10 +29,10 @@ use super::error::parse_error; use super::lister::UpyunLister; use super::writer::UpyunWriter; use super::writer::UpyunWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::UpyunConfig; use crate::*; - impl Configurator for UpyunConfig { type Builder = UpyunBuilder; @@ -128,7 +128,6 @@ impl UpyunBuilder { } impl Builder for UpyunBuilder { - const SCHEME: Scheme = Scheme::Upyun; type Config = UpyunConfig; /// Builds the backend and returns the result of UpyunBackend. @@ -170,7 +169,7 @@ impl Builder for UpyunBuilder { core: Arc::new(UpyunCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Upyun) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/upyun/mod.rs b/core/src/services/upyun/mod.rs index 694faf301..eee374681 100644 --- a/core/src/services/upyun/mod.rs +++ b/core/src/services/upyun/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for upyun service. +#[cfg(feature = "services-upyun")] +pub(super) const DEFAULT_SCHEME: &str = "upyun"; #[cfg(feature = "services-upyun")] mod core; #[cfg(feature = "services-upyun")] diff --git a/core/src/services/vercel_artifacts/builder.rs b/core/src/services/vercel_artifacts/builder.rs index 298866172..c0c3d144d 100644 --- a/core/src/services/vercel_artifacts/builder.rs +++ b/core/src/services/vercel_artifacts/builder.rs @@ -21,13 +21,12 @@ use std::sync::Arc; use super::backend::VercelArtifactsBackend; use super::core::VercelArtifactsCore; +use super::DEFAULT_SCHEME; use crate::raw::Access; use crate::raw::AccessorInfo; use crate::raw::HttpClient; use crate::services::VercelArtifactsConfig; -use crate::Scheme; use crate::*; - impl Configurator for VercelArtifactsConfig { type Builder = VercelArtifactsBuilder; @@ -82,12 +81,11 @@ impl VercelArtifactsBuilder { } impl Builder for VercelArtifactsBuilder { - const SCHEME: Scheme = Scheme::VercelArtifacts; type Config = VercelArtifactsConfig; fn build(self) -> Result<impl Access> { let info = AccessorInfo::default(); - info.set_scheme(Scheme::VercelArtifacts) + info.set_scheme(DEFAULT_SCHEME) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/vercel_artifacts/mod.rs b/core/src/services/vercel_artifacts/mod.rs index 2fe5a21db..086f792c0 100644 --- a/core/src/services/vercel_artifacts/mod.rs +++ b/core/src/services/vercel_artifacts/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for vercel_artifacts service. +#[cfg(feature = "services-vercel-artifacts")] +pub(super) const DEFAULT_SCHEME: &str = "vercel_artifacts"; #[cfg(feature = "services-vercel-artifacts")] mod backend; #[cfg(feature = "services-vercel-artifacts")] diff --git a/core/src/services/vercel_blob/backend.rs b/core/src/services/vercel_blob/backend.rs index 60aeeeb3d..2cfbb02d8 100644 --- a/core/src/services/vercel_blob/backend.rs +++ b/core/src/services/vercel_blob/backend.rs @@ -32,10 +32,10 @@ use super::error::parse_error; use super::lister::VercelBlobLister; use super::writer::VercelBlobWriter; use super::writer::VercelBlobWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::VercelBlobConfig; use crate::*; - impl Configurator for VercelBlobConfig { type Builder = VercelBlobBuilder; @@ -107,7 +107,6 @@ impl VercelBlobBuilder { } impl Builder for VercelBlobBuilder { - const SCHEME: Scheme = Scheme::VercelBlob; type Config = VercelBlobConfig; /// Builds the backend and returns the result of VercelBlobBackend. @@ -128,7 +127,7 @@ impl Builder for VercelBlobBuilder { core: Arc::new(VercelBlobCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::VercelBlob) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/vercel_blob/mod.rs b/core/src/services/vercel_blob/mod.rs index 8d466452a..cb2aed418 100644 --- a/core/src/services/vercel_blob/mod.rs +++ b/core/src/services/vercel_blob/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for vercel_blob service. +#[cfg(feature = "services-vercel-blob")] +pub(super) const DEFAULT_SCHEME: &str = "vercel_blob"; #[cfg(feature = "services-vercel-blob")] mod core; #[cfg(feature = "services-vercel-blob")] diff --git a/core/src/services/webdav/backend.rs b/core/src/services/webdav/backend.rs index c88b711d1..c887062e6 100644 --- a/core/src/services/webdav/backend.rs +++ b/core/src/services/webdav/backend.rs @@ -29,10 +29,10 @@ use super::delete::WebdavDeleter; use super::error::parse_error; use super::lister::WebdavLister; use super::writer::WebdavWriter; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::WebdavConfig; use crate::*; - impl Configurator for WebdavConfig { type Builder = WebdavBuilder; @@ -135,7 +135,6 @@ impl WebdavBuilder { } impl Builder for WebdavBuilder { - const SCHEME: Scheme = Scheme::Webdav; type Config = WebdavConfig; fn build(self) -> Result<impl Access> { @@ -176,7 +175,7 @@ impl Builder for WebdavBuilder { let core = Arc::new(WebdavCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::Webdav) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/webdav/mod.rs b/core/src/services/webdav/mod.rs index ae95bc94f..20ba1d3dc 100644 --- a/core/src/services/webdav/mod.rs +++ b/core/src/services/webdav/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for webdav service. +#[cfg(feature = "services-webdav")] +pub(super) const DEFAULT_SCHEME: &str = "webdav"; #[cfg(feature = "services-webdav")] mod core; #[cfg(feature = "services-webdav")] diff --git a/core/src/services/webhdfs/backend.rs b/core/src/services/webhdfs/backend.rs index 8f8ca704f..80039a685 100644 --- a/core/src/services/webhdfs/backend.rs +++ b/core/src/services/webhdfs/backend.rs @@ -34,10 +34,10 @@ use super::message::FileStatusType; use super::message::FileStatusWrapper; use super::writer::WebhdfsWriter; use super::writer::WebhdfsWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::WebhdfsConfig; use crate::*; - const WEBHDFS_DEFAULT_ENDPOINT: &str = "http://127.0.0.1:9870"; impl Configurator for WebhdfsConfig { @@ -147,7 +147,6 @@ impl WebhdfsBuilder { } impl Builder for WebhdfsBuilder { - const SCHEME: Scheme = Scheme::Webhdfs; type Config = WebhdfsConfig; /// build the backend @@ -181,7 +180,7 @@ impl Builder for WebhdfsBuilder { let auth = self.config.delegation.map(|dt| format!("delegation={dt}")); let info = AccessorInfo::default(); - info.set_scheme(Scheme::Webhdfs) + info.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/webhdfs/mod.rs b/core/src/services/webhdfs/mod.rs index 52b9527a3..4336f2eb6 100644 --- a/core/src/services/webhdfs/mod.rs +++ b/core/src/services/webhdfs/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for webhdfs service. +#[cfg(feature = "services-webhdfs")] +pub(super) const DEFAULT_SCHEME: &str = "webhdfs"; #[cfg(feature = "services-webhdfs")] mod delete; #[cfg(feature = "services-webhdfs")] diff --git a/core/src/services/yandex_disk/backend.rs b/core/src/services/yandex_disk/backend.rs index 79b1dcf16..fac129c12 100644 --- a/core/src/services/yandex_disk/backend.rs +++ b/core/src/services/yandex_disk/backend.rs @@ -30,10 +30,10 @@ use super::error::parse_error; use super::lister::YandexDiskLister; use super::writer::YandexDiskWriter; use super::writer::YandexDiskWriters; +use super::DEFAULT_SCHEME; use crate::raw::*; use crate::services::YandexDiskConfig; use crate::*; - impl Configurator for YandexDiskConfig { type Builder = YandexDiskBuilder; @@ -104,7 +104,6 @@ impl YandexDiskBuilder { } impl Builder for YandexDiskBuilder { - const SCHEME: Scheme = Scheme::YandexDisk; type Config = YandexDiskConfig; /// Builds the backend and returns the result of YandexDiskBackend. @@ -127,7 +126,7 @@ impl Builder for YandexDiskBuilder { core: Arc::new(YandexDiskCore { info: { let am = AccessorInfo::default(); - am.set_scheme(Scheme::YandexDisk) + am.set_scheme(DEFAULT_SCHEME) .set_root(&root) .set_native_capability(Capability { stat: true, diff --git a/core/src/services/yandex_disk/mod.rs b/core/src/services/yandex_disk/mod.rs index f643bb722..7e2129491 100644 --- a/core/src/services/yandex_disk/mod.rs +++ b/core/src/services/yandex_disk/mod.rs @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +/// Default scheme for yandex_disk service. +#[cfg(feature = "services-yandex-disk")] +pub(super) const DEFAULT_SCHEME: &str = "yandex_disk"; #[cfg(feature = "services-yandex-disk")] mod core; #[cfg(feature = "services-yandex-disk")] diff --git a/core/src/types/builder.rs b/core/src/types/builder.rs index 43b05e582..3490913cb 100644 --- a/core/src/types/builder.rs +++ b/core/src/types/builder.rs @@ -49,8 +49,6 @@ use crate::*; /// } /// ``` pub trait Builder: Default + 'static { - /// Associated scheme for this builder. It indicates what underlying service is. - const SCHEME: Scheme; /// Associated configuration for this builder. type Config: Configurator; @@ -60,7 +58,6 @@ pub trait Builder: Default + 'static { /// Dummy implementation of builder impl Builder for () { - const SCHEME: Scheme = Scheme::Custom("dummy"); type Config = (); fn build(self) -> Result<impl Access> { diff --git a/core/src/types/operator/info.rs b/core/src/types/operator/info.rs index dfe7b298c..2e483f450 100644 --- a/core/src/types/operator/info.rs +++ b/core/src/types/operator/info.rs @@ -15,6 +15,7 @@ // specific language governing permissions and limitations // under the License. +use std::str::FromStr; use std::sync::Arc; use crate::raw::*; @@ -31,7 +32,8 @@ impl OperatorInfo { /// [`Scheme`] of operator. pub fn scheme(&self) -> Scheme { - self.0.scheme() + let scheme_str = self.0.scheme(); + Scheme::from_str(scheme_str).unwrap_or(Scheme::Custom(scheme_str)) } /// Root of operator, will be in format like `/path/to/dir/` diff --git a/core/src/types/operator/operator.rs b/core/src/types/operator/operator.rs index 90f1bd8b2..f27306f3a 100644 --- a/core/src/types/operator/operator.rs +++ b/core/src/types/operator/operator.rs @@ -1004,7 +1004,7 @@ impl Operator { return Err( Error::new(ErrorKind::IsADirectory, "write path is a directory") .with_operation("Operator::writer") - .with_context("service", acc.info().scheme().into_static()) + .with_context("service", acc.info().scheme()) .with_context("path", &path), ); }