opendal 0.1.6.pre.rc.1-arm64-darwin-23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. checksums.yaml +7 -0
  2. data/.standard.yml +20 -0
  3. data/.tool-versions +1 -0
  4. data/.yardopts +1 -0
  5. data/DEPENDENCIES.md +9 -0
  6. data/DEPENDENCIES.rust.tsv +277 -0
  7. data/Gemfile +35 -0
  8. data/README.md +159 -0
  9. data/Rakefile +149 -0
  10. data/core/CHANGELOG.md +4929 -0
  11. data/core/CONTRIBUTING.md +61 -0
  12. data/core/DEPENDENCIES.md +3 -0
  13. data/core/DEPENDENCIES.rust.tsv +185 -0
  14. data/core/LICENSE +201 -0
  15. data/core/README.md +228 -0
  16. data/core/benches/README.md +18 -0
  17. data/core/benches/ops/README.md +26 -0
  18. data/core/benches/types/README.md +9 -0
  19. data/core/benches/vs_fs/README.md +35 -0
  20. data/core/benches/vs_s3/README.md +55 -0
  21. data/core/edge/README.md +3 -0
  22. data/core/edge/file_write_on_full_disk/README.md +14 -0
  23. data/core/edge/s3_aws_assume_role_with_web_identity/README.md +18 -0
  24. data/core/edge/s3_read_on_wasm/.gitignore +3 -0
  25. data/core/edge/s3_read_on_wasm/README.md +42 -0
  26. data/core/edge/s3_read_on_wasm/webdriver.json +15 -0
  27. data/core/examples/README.md +23 -0
  28. data/core/examples/basic/README.md +15 -0
  29. data/core/examples/concurrent-upload/README.md +15 -0
  30. data/core/examples/multipart-upload/README.md +15 -0
  31. data/core/fuzz/.gitignore +5 -0
  32. data/core/fuzz/README.md +68 -0
  33. data/core/src/docs/comparisons/vs_object_store.md +183 -0
  34. data/core/src/docs/performance/concurrent_write.md +101 -0
  35. data/core/src/docs/performance/http_optimization.md +124 -0
  36. data/core/src/docs/rfcs/0000_example.md +74 -0
  37. data/core/src/docs/rfcs/0000_foyer_integration.md +111 -0
  38. data/core/src/docs/rfcs/0041_object_native_api.md +185 -0
  39. data/core/src/docs/rfcs/0044_error_handle.md +198 -0
  40. data/core/src/docs/rfcs/0057_auto_region.md +160 -0
  41. data/core/src/docs/rfcs/0069_object_stream.md +145 -0
  42. data/core/src/docs/rfcs/0090_limited_reader.md +155 -0
  43. data/core/src/docs/rfcs/0112_path_normalization.md +79 -0
  44. data/core/src/docs/rfcs/0191_async_streaming_io.md +328 -0
  45. data/core/src/docs/rfcs/0203_remove_credential.md +96 -0
  46. data/core/src/docs/rfcs/0221_create_dir.md +89 -0
  47. data/core/src/docs/rfcs/0247_retryable_error.md +87 -0
  48. data/core/src/docs/rfcs/0293_object_id.md +67 -0
  49. data/core/src/docs/rfcs/0337_dir_entry.md +191 -0
  50. data/core/src/docs/rfcs/0409_accessor_capabilities.md +67 -0
  51. data/core/src/docs/rfcs/0413_presign.md +154 -0
  52. data/core/src/docs/rfcs/0423_command_line_interface.md +268 -0
  53. data/core/src/docs/rfcs/0429_init_from_iter.md +107 -0
  54. data/core/src/docs/rfcs/0438_multipart.md +163 -0
  55. data/core/src/docs/rfcs/0443_gateway.md +73 -0
  56. data/core/src/docs/rfcs/0501_new_builder.md +111 -0
  57. data/core/src/docs/rfcs/0554_write_refactor.md +96 -0
  58. data/core/src/docs/rfcs/0561_list_metadata_reuse.md +210 -0
  59. data/core/src/docs/rfcs/0599_blocking_api.md +157 -0
  60. data/core/src/docs/rfcs/0623_redis_service.md +300 -0
  61. data/core/src/docs/rfcs/0627_split_capabilities.md +89 -0
  62. data/core/src/docs/rfcs/0661_path_in_accessor.md +126 -0
  63. data/core/src/docs/rfcs/0793_generic_kv_services.md +209 -0
  64. data/core/src/docs/rfcs/0926_object_reader.md +93 -0
  65. data/core/src/docs/rfcs/0977_refactor_error.md +151 -0
  66. data/core/src/docs/rfcs/1085_object_handler.md +73 -0
  67. data/core/src/docs/rfcs/1391_object_metadataer.md +110 -0
  68. data/core/src/docs/rfcs/1398_query_based_metadata.md +125 -0
  69. data/core/src/docs/rfcs/1420_object_writer.md +147 -0
  70. data/core/src/docs/rfcs/1477_remove_object_concept.md +159 -0
  71. data/core/src/docs/rfcs/1735_operation_extension.md +117 -0
  72. data/core/src/docs/rfcs/2083_writer_sink_api.md +106 -0
  73. data/core/src/docs/rfcs/2133_append_api.md +88 -0
  74. data/core/src/docs/rfcs/2299_chain_based_operator_api.md +99 -0
  75. data/core/src/docs/rfcs/2602_object_versioning.md +138 -0
  76. data/core/src/docs/rfcs/2758_merge_append_into_write.md +79 -0
  77. data/core/src/docs/rfcs/2774_lister_api.md +66 -0
  78. data/core/src/docs/rfcs/2779_list_with_metakey.md +143 -0
  79. data/core/src/docs/rfcs/2852_native_capability.md +58 -0
  80. data/core/src/docs/rfcs/2884_merge_range_read_into_read.md +80 -0
  81. data/core/src/docs/rfcs/3017_remove_write_copy_from.md +94 -0
  82. data/core/src/docs/rfcs/3197_config.md +237 -0
  83. data/core/src/docs/rfcs/3232_align_list_api.md +69 -0
  84. data/core/src/docs/rfcs/3243_list_prefix.md +128 -0
  85. data/core/src/docs/rfcs/3356_lazy_reader.md +111 -0
  86. data/core/src/docs/rfcs/3526_list_recursive.md +59 -0
  87. data/core/src/docs/rfcs/3574_concurrent_stat_in_list.md +80 -0
  88. data/core/src/docs/rfcs/3734_buffered_reader.md +64 -0
  89. data/core/src/docs/rfcs/3898_concurrent_writer.md +66 -0
  90. data/core/src/docs/rfcs/3911_deleter_api.md +165 -0
  91. data/core/src/docs/rfcs/4382_range_based_read.md +213 -0
  92. data/core/src/docs/rfcs/4638_executor.md +215 -0
  93. data/core/src/docs/rfcs/5314_remove_metakey.md +120 -0
  94. data/core/src/docs/rfcs/5444_operator_from_uri.md +162 -0
  95. data/core/src/docs/rfcs/5479_context.md +140 -0
  96. data/core/src/docs/rfcs/5485_conditional_reader.md +112 -0
  97. data/core/src/docs/rfcs/5495_list_with_deleted.md +81 -0
  98. data/core/src/docs/rfcs/5556_write_returns_metadata.md +121 -0
  99. data/core/src/docs/rfcs/5871_read_returns_metadata.md +112 -0
  100. data/core/src/docs/rfcs/6189_remove_native_blocking.md +106 -0
  101. data/core/src/docs/rfcs/6209_glob_support.md +132 -0
  102. data/core/src/docs/rfcs/6213_options_api.md +142 -0
  103. data/core/src/docs/rfcs/README.md +62 -0
  104. data/core/src/docs/upgrade.md +1556 -0
  105. data/core/src/services/aliyun_drive/docs.md +61 -0
  106. data/core/src/services/alluxio/docs.md +45 -0
  107. data/core/src/services/azblob/docs.md +77 -0
  108. data/core/src/services/azdls/docs.md +73 -0
  109. data/core/src/services/azfile/docs.md +65 -0
  110. data/core/src/services/b2/docs.md +54 -0
  111. data/core/src/services/cacache/docs.md +38 -0
  112. data/core/src/services/cloudflare_kv/docs.md +21 -0
  113. data/core/src/services/cos/docs.md +55 -0
  114. data/core/src/services/d1/docs.md +48 -0
  115. data/core/src/services/dashmap/docs.md +38 -0
  116. data/core/src/services/dbfs/docs.md +57 -0
  117. data/core/src/services/dropbox/docs.md +64 -0
  118. data/core/src/services/etcd/docs.md +45 -0
  119. data/core/src/services/foundationdb/docs.md +42 -0
  120. data/core/src/services/fs/docs.md +49 -0
  121. data/core/src/services/ftp/docs.md +42 -0
  122. data/core/src/services/gcs/docs.md +76 -0
  123. data/core/src/services/gdrive/docs.md +65 -0
  124. data/core/src/services/ghac/docs.md +84 -0
  125. data/core/src/services/github/docs.md +52 -0
  126. data/core/src/services/gridfs/docs.md +46 -0
  127. data/core/src/services/hdfs/docs.md +140 -0
  128. data/core/src/services/hdfs_native/docs.md +35 -0
  129. data/core/src/services/http/docs.md +45 -0
  130. data/core/src/services/huggingface/docs.md +61 -0
  131. data/core/src/services/ipfs/docs.md +45 -0
  132. data/core/src/services/ipmfs/docs.md +14 -0
  133. data/core/src/services/koofr/docs.md +51 -0
  134. data/core/src/services/lakefs/docs.md +62 -0
  135. data/core/src/services/memcached/docs.md +47 -0
  136. data/core/src/services/memory/docs.md +36 -0
  137. data/core/src/services/mini_moka/docs.md +19 -0
  138. data/core/src/services/moka/docs.md +42 -0
  139. data/core/src/services/mongodb/docs.md +49 -0
  140. data/core/src/services/monoiofs/docs.md +46 -0
  141. data/core/src/services/mysql/docs.md +47 -0
  142. data/core/src/services/obs/docs.md +54 -0
  143. data/core/src/services/onedrive/docs.md +115 -0
  144. data/core/src/services/opfs/docs.md +18 -0
  145. data/core/src/services/oss/docs.md +74 -0
  146. data/core/src/services/pcloud/docs.md +51 -0
  147. data/core/src/services/persy/docs.md +43 -0
  148. data/core/src/services/postgresql/docs.md +47 -0
  149. data/core/src/services/redb/docs.md +41 -0
  150. data/core/src/services/redis/docs.md +43 -0
  151. data/core/src/services/rocksdb/docs.md +54 -0
  152. data/core/src/services/s3/compatible_services.md +126 -0
  153. data/core/src/services/s3/docs.md +244 -0
  154. data/core/src/services/seafile/docs.md +54 -0
  155. data/core/src/services/sftp/docs.md +49 -0
  156. data/core/src/services/sled/docs.md +39 -0
  157. data/core/src/services/sqlite/docs.md +46 -0
  158. data/core/src/services/surrealdb/docs.md +54 -0
  159. data/core/src/services/swift/compatible_services.md +53 -0
  160. data/core/src/services/swift/docs.md +52 -0
  161. data/core/src/services/tikv/docs.md +43 -0
  162. data/core/src/services/upyun/docs.md +51 -0
  163. data/core/src/services/vercel_artifacts/docs.md +40 -0
  164. data/core/src/services/vercel_blob/docs.md +45 -0
  165. data/core/src/services/webdav/docs.md +49 -0
  166. data/core/src/services/webhdfs/docs.md +90 -0
  167. data/core/src/services/yandex_disk/docs.md +45 -0
  168. data/core/tests/behavior/README.md +77 -0
  169. data/core/tests/data/normal_dir/.gitkeep +0 -0
  170. data/core/tests/data/normal_file.txt +1041 -0
  171. data/core/tests/data/special_dir !@#$%^&()_+-=;',/.gitkeep +0 -0
  172. data/core/tests/data/special_file !@#$%^&()_+-=;',.txt +1041 -0
  173. data/core/users.md +13 -0
  174. data/extconf.rb +24 -0
  175. data/lib/opendal.rb +25 -0
  176. data/lib/opendal_ruby/entry.rb +35 -0
  177. data/lib/opendal_ruby/io.rb +70 -0
  178. data/lib/opendal_ruby/metadata.rb +44 -0
  179. data/lib/opendal_ruby/opendal_ruby.bundle +0 -0
  180. data/lib/opendal_ruby/operator.rb +29 -0
  181. data/lib/opendal_ruby/operator_info.rb +26 -0
  182. data/opendal.gemspec +91 -0
  183. data/test/blocking_op_test.rb +112 -0
  184. data/test/capability_test.rb +42 -0
  185. data/test/io_test.rb +172 -0
  186. data/test/lister_test.rb +77 -0
  187. data/test/metadata_test.rb +78 -0
  188. data/test/middlewares_test.rb +46 -0
  189. data/test/operator_info_test.rb +35 -0
  190. data/test/test_helper.rb +36 -0
  191. metadata +240 -0
@@ -0,0 +1,45 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [ ] ~~write~~
8
+ - [ ] ~~create_dir~~
9
+ - [ ] ~~delete~~
10
+ - [ ] ~~copy~~
11
+ - [ ] ~~rename~~
12
+ - [ ] ~~list~~
13
+ - [ ] ~~presign~~
14
+ - [ ] blocking
15
+
16
+ ## Notes
17
+
18
+ Only `read` and `stat` are supported. We can use this service to visit any
19
+ HTTP Server like nginx, caddy.
20
+
21
+ ## Configuration
22
+
23
+ - `endpoint`: set the endpoint for http
24
+ - `root`: Set the work directory for backend
25
+
26
+ You can refer to [`HttpBuilder`]'s docs for more information
27
+
28
+ ## Example
29
+
30
+ ### Via Builder
31
+
32
+ ```rust,no_run
33
+ use anyhow::Result;
34
+ use opendal::services::Http;
35
+ use opendal::Operator;
36
+
37
+ #[tokio::main]
38
+ async fn main() -> Result<()> {
39
+ // create http backend builder
40
+ let mut builder = Http::default().endpoint("127.0.0.1");
41
+
42
+ let op: Operator = Operator::new(builder)?.finish();
43
+ Ok(())
44
+ }
45
+ ```
@@ -0,0 +1,61 @@
1
+ This service will visit the [Huggingface API](https://huggingface.co/docs/huggingface_hub/package_reference/hf_api) to access the Huggingface File System.
2
+ Currently, we only support the `model` and `dataset` types of repositories, and operations are limited to reading and listing/stating.
3
+
4
+ Huggingface doesn't host official HTTP API docs. Detailed HTTP request API information can be found on the [`huggingface_hub` Source Code](https://github.com/huggingface/huggingface_hub).
5
+
6
+ ## Capabilities
7
+
8
+ This service can be used to:
9
+
10
+ - [x] stat
11
+ - [x] read
12
+ - [ ] write
13
+ - [ ] create_dir
14
+ - [ ] delete
15
+ - [ ] copy
16
+ - [ ] rename
17
+ - [x] list
18
+ - [ ] ~~presign~~
19
+ - [ ] blocking
20
+
21
+ ## Configurations
22
+
23
+ - `repo_type`: The type of the repository.
24
+ - `repo_id`: The id of the repository.
25
+ - `revision`: The revision of the repository.
26
+ - `root`: Set the work directory for backend.
27
+ - `token`: The token for accessing the repository.
28
+
29
+ Refer to [`HuggingfaceBuilder`]'s public API docs for more information.
30
+
31
+ ## Examples
32
+
33
+ ### Via Builder
34
+
35
+ ```rust,no_run
36
+ use std::sync::Arc;
37
+
38
+ use anyhow::Result;
39
+ use opendal::services::Huggingface;
40
+ use opendal::Operator;
41
+
42
+ #[tokio::main]
43
+ async fn main() -> Result<()> {
44
+ // Create Huggingface backend builder
45
+ let mut builder = Huggingface::default()
46
+ // set the type of Huggingface repository
47
+ .repo_type("dataset")
48
+ // set the id of Huggingface repository
49
+ .repo_id("databricks/databricks-dolly-15k")
50
+ // set the revision of Huggingface repository
51
+ .revision("main")
52
+ // set the root for Huggingface, all operations will happen under this root
53
+ .root("/path/to/dir")
54
+ // set the token for accessing the repository
55
+ .token("access_token");
56
+
57
+ let op: Operator = Operator::new(builder)?.finish();
58
+
59
+ Ok(())
60
+ }
61
+ ```
@@ -0,0 +1,45 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [ ] ~~write~~
8
+ - [ ] ~~create_dir~~
9
+ - [ ] ~~delete~~
10
+ - [ ] ~~copy~~
11
+ - [ ] ~~rename~~
12
+ - [x] list
13
+ - [ ] presign
14
+ - [ ] blocking
15
+
16
+ ## Configuration
17
+
18
+ - `root`: Set the work directory for backend
19
+ - `endpoint`: Customizable endpoint setting
20
+
21
+ You can refer to [`IpfsBuilder`]'s docs for more information
22
+
23
+ ## Example
24
+
25
+ ### Via Builder
26
+
27
+ ```rust,no_run
28
+ use anyhow::Result;
29
+ use opendal::services::Ipfs;
30
+ use opendal::Operator;
31
+
32
+ #[tokio::main]
33
+ async fn main() -> Result<()> {
34
+ // create backend builder
35
+ let mut builder = Ipfs::default()
36
+ // set the endpoint for OpenDAL
37
+ .endpoint("https://ipfs.io")
38
+ // set the root for OpenDAL
39
+ .root("/ipfs/QmPpCt1aYGb9JWJRmXRUnmJtVgeFFTJGzWFYEEX7bo9zGJ");
40
+
41
+ let op: Operator = Operator::new(builder)?.finish();
42
+
43
+ Ok(())
44
+ }
45
+ ```
@@ -0,0 +1,14 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [ ] create_dir
9
+ - [x] delete
10
+ - [ ] copy
11
+ - [ ] rename
12
+ - [x] list
13
+ - [ ] presign
14
+ - [ ] blocking
@@ -0,0 +1,51 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [x] create_dir
9
+ - [x] delete
10
+ - [x] copy
11
+ - [x] rename
12
+ - [x] list
13
+ - [ ] presign
14
+ - [ ] blocking
15
+
16
+ ## Configuration
17
+
18
+ - `root`: Set the work directory for backend
19
+ - `endpoint`: Koofr endpoint
20
+ - `email` Koofr email
21
+ - `password` Koofr password
22
+
23
+ You can refer to [`KoofrBuilder`]'s docs for more information
24
+
25
+ ## Example
26
+
27
+ ### Via Builder
28
+
29
+ ```rust,no_run
30
+ use anyhow::Result;
31
+ use opendal::services::Koofr;
32
+ use opendal::Operator;
33
+
34
+ #[tokio::main]
35
+ async fn main() -> Result<()> {
36
+ // create backend builder
37
+ let mut builder = Koofr::default()
38
+ // set the storage bucket for OpenDAL
39
+ .root("/")
40
+ // set the bucket for OpenDAL
41
+ .endpoint("https://api.koofr.net/")
42
+ // set the email for OpenDAL
43
+ .email("me@example.com")
44
+ // set the password for OpenDAL
45
+ .password("xxx xxx xxx xxx");
46
+
47
+ let op: Operator = Operator::new(builder)?.finish();
48
+
49
+ Ok(())
50
+ }
51
+ ```
@@ -0,0 +1,62 @@
1
+ This service will visit the [Lakefs API](https://Lakefs.co/docs/Lakefs_hub/package_reference/hf_api) to access the Lakefs File System.
2
+ Currently, we only support the `model` and `dataset` types of repositories, and operations are limited to reading and listing/stating.
3
+
4
+ Lakefs doesn't host official HTTP API docs. Detailed HTTP request API information can be found on the [`Lakefs_hub` Source Code](https://github.com/Lakefs/Lakefs_hub).
5
+
6
+ ## Capabilities
7
+
8
+ This service can be used to:
9
+
10
+ - [x] stat
11
+ - [x] read
12
+ - [x] write
13
+ - [ ] create_dir
14
+ - [x] delete
15
+ - [x] copy
16
+ - [ ] rename
17
+ - [x] list
18
+ - [ ] ~~presign~~
19
+ - [ ] blocking
20
+
21
+ ## Configurations
22
+
23
+ - `endpoint`: The endpoint of the Lakefs repository.
24
+ - `repository`: The id of the repository.
25
+ - `branch`: The branch of the repository.
26
+ - `root`: Set the work directory for backend.
27
+ - `username`: The username for accessing the repository.
28
+ - `password`: The password for accessing the repository.
29
+
30
+ Refer to [`LakefsBuilder`]'s public API docs for more information.
31
+
32
+ ## Examples
33
+
34
+ ### Via Builder
35
+
36
+ ```rust,no_run
37
+ use opendal::Operator;
38
+ use opendal::services::Lakefs;
39
+ use anyhow::Result;
40
+
41
+ #[tokio::main]
42
+ async fn main() -> Result<()> {
43
+ // Create Lakefs backend builder
44
+ let mut builder = Lakefs::default()
45
+ // set the type of Lakefs endpoint
46
+ .endpoint("https://whole-llama-mh6mux.us-east-1.lakefscloud.io")
47
+ // set the id of Lakefs repository
48
+ .repository("sample-repo")
49
+ // set the branch of Lakefs repository
50
+ .branch("main")
51
+ // set the username for accessing the repository
52
+ .username("xxx")
53
+ // set the password for accessing the repository
54
+ .password("xxx");
55
+
56
+ let op: Operator = Operator::new(builder)?.finish();
57
+
58
+ let stat = op.stat("README.md").await?;
59
+ println!("{:?}", stat);
60
+ Ok(())
61
+ }
62
+ ```
@@ -0,0 +1,47 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [ ] create_dir
9
+ - [x] delete
10
+ - [ ] copy
11
+ - [ ] rename
12
+ - [ ] ~~list~~
13
+ - [ ] ~~presign~~
14
+ - [ ] blocking
15
+
16
+ ## Configuration
17
+
18
+ - `root`: Set the working directory of `OpenDAL`
19
+ - `username`: Set the username for authentication.
20
+ - `password`: Set the password for authentication.
21
+ - `endpoint`: Set the network address of memcached server
22
+ - `default_ttl`: Set the ttl for memcached service.
23
+
24
+ You can refer to [`MemcachedBuilder`]'s docs for more information
25
+
26
+ ## Example
27
+
28
+ ### Via Builder
29
+
30
+ ```rust,no_run
31
+ use anyhow::Result;
32
+ use opendal::services::Memcached;
33
+ use opendal::Operator;
34
+
35
+ #[tokio::main]
36
+ async fn main() -> Result<()> {
37
+ // create memcached backend builder
38
+ let mut builder = Memcached::default()
39
+ .endpoint("tcp://127.0.0.1:11211");
40
+ // if you enable authentication, set username and password for authentication
41
+ // builder.username("admin")
42
+ // builder.password("password");
43
+
44
+ let op: Operator = Operator::new(builder)?.finish();
45
+ Ok(())
46
+ }
47
+ ```
@@ -0,0 +1,36 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [x] create_dir
9
+ - [x] delete
10
+ - [x] copy
11
+ - [x] rename
12
+ - [ ] list
13
+ - [ ] presign
14
+ - [ ] blocking
15
+
16
+ ## Example
17
+
18
+ ### Via Builder
19
+
20
+
21
+ ```rust,no_run
22
+ use std::sync::Arc;
23
+
24
+ use anyhow::Result;
25
+ use opendal::services::Memory;
26
+ use opendal::Operator;
27
+
28
+ #[tokio::main]
29
+ async fn main() -> Result<()> {
30
+ let mut builder = Memory::default().root("/tmp");
31
+
32
+ let op: Operator = Operator::new(builder)?.finish();
33
+
34
+ Ok(())
35
+ }
36
+ ```
@@ -0,0 +1,19 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [x] create_dir
9
+ - [x] delete
10
+ - [ ] copy
11
+ - [ ] rename
12
+ - [ ] list
13
+ - [ ] presign
14
+ - [ ] blocking
15
+
16
+ ## Notes
17
+
18
+ To better assist you in choosing the right cache for your use case,
19
+ Here's a comparison table with [moka](https://github.com/moka-rs/moka#choosing-the-right-cache-for-your-use-case)
@@ -0,0 +1,42 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [x] create_dir
9
+ - [x] delete
10
+ - [ ] copy
11
+ - [ ] rename
12
+ - [ ] list
13
+ - [ ] presign
14
+ - [ ] blocking
15
+
16
+ ## Configuration
17
+
18
+ - `name`: Set the name for this cache instance.
19
+ - `max_capacity`: Set the max capacity of the cache.
20
+ - `time_to_live`: Set the time to live of the cache.
21
+ - `time_to_idle`: Set the time to idle of the cache.
22
+
23
+ You can refer to [`MokaBuilder`]'s docs for more information
24
+
25
+ ## Example
26
+
27
+ ### Via Builder
28
+
29
+ ```rust,no_run
30
+ use anyhow::Result;
31
+ use opendal::services::Moka;
32
+ use opendal::Operator;
33
+
34
+ #[tokio::main]
35
+ async fn main() -> Result<()> {
36
+ let mut builder = Moka::default()
37
+ .name("opendal");
38
+
39
+ let op: Operator = Operator::new(builder)?.finish();
40
+ Ok(())
41
+ }
42
+ ```
@@ -0,0 +1,49 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [x] create_dir
9
+ - [x] delete
10
+ - [ ] copy
11
+ - [ ] rename
12
+ - [ ] ~~list~~
13
+ - [ ] ~~presign~~
14
+ - [ ] blocking
15
+
16
+ ## Configuration
17
+
18
+ - `root`: Set the working directory of `OpenDAL`
19
+ - `connection_string`: Set the connection string of mongodb server
20
+ - `database`: Set the database of mongodb
21
+ - `collection`: Set the collection of mongodb
22
+ - `key_field`: Set the key field of mongodb
23
+ - `value_field`: Set the value field of mongodb
24
+
25
+ ## Example
26
+
27
+ ### Via Builder
28
+
29
+ ```rust,no_run
30
+ use anyhow::Result;
31
+ use opendal::services::Mongodb;
32
+ use opendal::Operator;
33
+
34
+ #[tokio::main]
35
+ async fn main() -> Result<()> {
36
+ let mut builder = Mongodb::default()
37
+ .root("/")
38
+ .connection_string("mongodb://myUser:myPassword@localhost:27017/myAuthDB")
39
+ .database("your_database")
40
+ .collection("your_collection")
41
+ // key field type in the table should be compatible with Rust's &str like text
42
+ .key_field("key")
43
+ // value field type in the table should be compatible with Rust's Vec<u8> like bytea
44
+ .value_field("value");
45
+
46
+ let op = Operator::new(builder)?.finish();
47
+ Ok(())
48
+ }
49
+ ```
@@ -0,0 +1,46 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [x] append
9
+ - [x] create_dir
10
+ - [x] delete
11
+ - [x] copy
12
+ - [x] rename
13
+ - [ ] list
14
+ - [ ] ~~presign~~
15
+ - [ ] blocking
16
+
17
+ ## Configuration
18
+
19
+ - `root`: Set the work dir for backend.
20
+
21
+ You can refer to [`MonoiofsBuilder`]'s docs for more information
22
+
23
+ ## Example
24
+
25
+ ### Via Builder
26
+
27
+ ```rust,no_run
28
+ use anyhow::Result;
29
+ use opendal::services::Monoiofs;
30
+ use opendal::Operator;
31
+
32
+ #[tokio::main]
33
+ async fn main() -> Result<()> {
34
+ // Create monoiofs backend builder.
35
+ let mut builder = Monoiofs::default()
36
+ // Set the root for monoiofs, all operations will happen under this root.
37
+ //
38
+ // NOTE: the root must be absolute path.
39
+ .root("/tmp");
40
+
41
+ // `Accessor` provides the low level APIs, we will use `Operator` normally.
42
+ let op: Operator = Operator::new(builder)?.finish();
43
+
44
+ Ok(())
45
+ }
46
+ ```
@@ -0,0 +1,47 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [x] create_dir
9
+ - [x] delete
10
+ - [ ] copy
11
+ - [ ] rename
12
+ - [ ] ~~list~~
13
+ - [ ] ~~presign~~
14
+ - [ ] blocking
15
+
16
+ ## Configuration
17
+
18
+ - `root`: Set the working directory of `OpenDAL`
19
+ - `connection_string`: Set the connection string of mysql server
20
+ - `table`: Set the table of mysql
21
+ - `key_field`: Set the key field of mysql
22
+ - `value_field`: Set the value field of mysql
23
+
24
+ ## Example
25
+
26
+ ### Via Builder
27
+
28
+ ```rust,no_run
29
+ use anyhow::Result;
30
+ use opendal::services::Mysql;
31
+ use opendal::Operator;
32
+
33
+ #[tokio::main]
34
+ async fn main() -> Result<()> {
35
+ let mut builder = Mysql::default()
36
+ .root("/")
37
+ .connection_string("mysql://you_username:your_password@127.0.0.1:5432/your_database")
38
+ .table("your_table")
39
+ // key field type in the table should be compatible with Rust's &str like text
40
+ .key_field("key")
41
+ // value field type in the table should be compatible with Rust's Vec<u8> like bytea
42
+ .value_field("value");
43
+
44
+ let op = Operator::new(builder)?.finish();
45
+ Ok(())
46
+ }
47
+ ```
@@ -0,0 +1,54 @@
1
+ ## Capabilities
2
+
3
+ This service can be used to:
4
+
5
+ - [x] stat
6
+ - [x] read
7
+ - [x] write
8
+ - [x] create_dir
9
+ - [x] delete
10
+ - [x] copy
11
+ - [ ] rename
12
+ - [x] list
13
+ - [x] presign
14
+ - [ ] blocking
15
+
16
+ ## Configuration
17
+
18
+ - `root`: Set the work directory for backend
19
+ - `bucket`: Set the container name for backend
20
+ - `endpoint`: Customizable endpoint setting
21
+ - `access_key_id`: Set the access_key_id for backend.
22
+ - `secret_access_key`: Set the secret_access_key for backend.
23
+
24
+ You can refer to [`ObsBuilder`]'s docs for more information
25
+
26
+ ## Example
27
+
28
+ ### Via Builder
29
+
30
+ ```rust,no_run
31
+ use anyhow::Result;
32
+ use opendal::services::Obs;
33
+ use opendal::Operator;
34
+
35
+ #[tokio::main]
36
+ async fn main() -> Result<()> {
37
+ // create backend builder
38
+ let mut builder = Obs::default()
39
+ // set the storage bucket for OpenDAL
40
+ .bucket("test")
41
+ .endpoint("obs.cn-north-1.myhuaweicloud.com")
42
+ // Set the access_key_id and secret_access_key.
43
+ //
44
+ // OpenDAL will try load credential from the env.
45
+ // If credential not set and no valid credential in env, OpenDAL will
46
+ // send request without signing like anonymous user.
47
+ .access_key_id("access_key_id")
48
+ .secret_access_key("secret_access_key");
49
+
50
+ let op: Operator = Operator::new(builder)?.finish();
51
+
52
+ Ok(())
53
+ }
54
+ ```