This is an automated email from the ASF dual-hosted git repository. suyanhanx pushed a commit to branch binding-nodejs-capability in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
commit 807327325285f7ad75d09fbd188868b5aca86cdf Author: suyanhanx <[email protected]> AuthorDate: Wed Nov 22 22:38:09 2023 +0800 save work Signed-off-by: suyanhanx <[email protected]> --- bindings/nodejs/src/capability.rs | 44 +++++++++++++++++++++++++++++++++++++++ bindings/nodejs/src/lib.rs | 2 ++ 2 files changed, 46 insertions(+) diff --git a/bindings/nodejs/src/capability.rs b/bindings/nodejs/src/capability.rs new file mode 100644 index 000000000..2eaee90a1 --- /dev/null +++ b/bindings/nodejs/src/capability.rs @@ -0,0 +1,44 @@ + +#[napi] +pub struct Capability(opendal::Capability); + +impl Capability { + pub fn new(op: opendal::Operator) -> Self { + Self(op.info().full_capability()) + } +} + +#[napi] +impl Capability { + #[napi(getter)] + pub fn stat(&self) -> bool { + self.0.stat + } + + // stat_with_if_match + #[napi(getter)] + pub fn stat_with_if_none_match(&self) -> bool { + self.0.stat_with_if_none_match + } + + // stat_with_if_none_match + #[napi(getter)] + pub fn stat_with_if_match(&self) -> bool { + self.0.stat_with_if_match + } + + #[napi(getter)] + pub fn read(&self) -> bool { + self.0.read + } + + #[napi(getter)] + pub fn write(&self) -> bool { + self.0.write + } + + #[napi(getter)] + pub fn delete(&self) -> bool { + self.0.delete + } +} diff --git a/bindings/nodejs/src/lib.rs b/bindings/nodejs/src/lib.rs index 20e46d7e2..ec964e594 100644 --- a/bindings/nodejs/src/lib.rs +++ b/bindings/nodejs/src/lib.rs @@ -18,6 +18,8 @@ #[macro_use] extern crate napi_derive; +mod capability; + use std::collections::HashMap; use std::str::FromStr; use std::time::Duration;
