1 个不稳定版本
0.11.0 | 2022 年 8 月 13 日 |
---|
#10 在 #注解
71KB
1K SLoC
为 Hypothesis 提供的 Rust API
描述
这是一个针对 Hypothesis Web API v1.0.0 的轻量级包装器和 CLI。它包括与注释(创建/更新/删除/搜索/获取/标记)
- (创建/更新/列表/获取/离开/成员)
- 个人资料(用户信息/组)
- 相关的所有 APIKey 授权端点。
安装和使用
授权
您需要一个 Hypothesis 账户,以及通过以下链接获取的个人 API 令牌:此处。将环境变量 $HYPOTHESIS_NAME
和 $HYPOTHESIS_KEY
分别设置为您的用户名和开发者 API 密钥。
作为命令行工具
cargo install hypothesis
运行 hypothesis --help
查看子命令和选项。注意:CLI 当前尚未具备 Rust crate 的所有功能,特别是批量操作和更新日期不受支持。
生成 shell 完整性
hypothesis complete zsh > .oh-my-zsh/completions/_hypothesis
exec zsh
作为 Rust 包
将其添加到您的 Cargo.toml 中
[dependencies]
hypothesis = {version = "0.4.0", default-features = false}
tokio = { version = "0.2", features = ["macros"] }
示例
use hypothesis::Hypothesis;
use hypothesis::annotations::{InputAnnotation, Target, Selector};
#[tokio::main]
async fn main() -> Result<(), hypothesis::errors::HypothesisError> {
let api = Hypothesis::from_env()?;
let new_annotation = InputAnnotation::builder()
.uri("https://www.example.com")
.text("this is a comment")
.target(Target::builder()
.source("https://www.example.com")
.selector(vec![Selector::new_quote("exact text in website to highlight",
"prefix of text",
"suffix of text")])
.build()?)
.tags(vec!["tag1".to_string(), "tag2".to_string()])
.build()?;
api.create_annotation(&new_annotation).await?;
Ok(())
}
请参阅 API 结构的文档(Hypothesis
)以获取可能的查询列表。使用批量函数执行多个操作 - 例如,使用 api.fetch_annotations
而不是循环调用 api.fetch_annotation
。
请参阅 文档 了解更多使用示例。
变更日志
请参阅 变更日志
贡献
请确保您在存储库根目录中有一个 .env 文件(已添加到 .gitignore),其中包含 HYPOTHESIS_NAME、HYPOTHESIS_KEY 和 TEST_GROUP_ID
注意事项 / 待办事项
- 仅支持 APIKey 授权和 hypothes.is 权限(即单个用户)。
Target.selector.RangeSelector
似乎没有遵循W3C标准。目前它只是一个hashmap。Annotation
超媒体链接以hashmap的形式存储,因为我不知道所有可能值。- 需要弄清楚
Document
如何工作,以便正确地记录它(哈哈)。 - 创建后无法删除一个组,但可以保留它(也许这是同一件事?)
- 不清楚
UserProfile.preferences
和UserProfile.features
的含义。 - CLI只是将输出作为JSON打印,这行吗?更高级的CLI可以在此基础上构建(或直接使用crate)
依赖项
~8–22MB
~314K SLoC