22 个版本
0.11.5 | 2024年6月6日 |
---|---|
0.11.1 | 2023年12月31日 |
0.10.4 | 2022年8月25日 |
0.10.3 | 2022年4月30日 |
0.6.0 | 2020年7月23日 |
#699 在 命令行工具
169 每月下载量
在 gooseberry 中使用
88KB
1.5K 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 crate
将其添加到您的 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
的循环。
请参阅文档以获取更多使用示例。
变更日志
请参阅 变更日志
贡献
确保您在仓库根目录中有一个包含 HYPOTHESIS_NAME、HYPOTHESIS_KEY 和 TEST_GROUP_ID 的 .env 文件(已添加到 .gitignore)。
注意事项/待办事项
- 仅支持 APIKey 授权和 hypothes.is 权限(即单个用户)。
Target.selector.RangeSelector
似乎不遵循W3C 标准。目前它只是一个哈希表。Annotation
超媒体链接存储为一个哈希表,因为我不知道所有可能的值。- 需要弄清楚
Document
是如何工作的,以便正确地对其进行文档记录(哈哈)。 - 创建组后不能删除组,但可以留下(也许这是同一件事?)
- 不清楚
UserProfile.preferences
和UserProfile.features
的含义。 - CLI 仅将输出以 JSON 格式输出,这是否可以?更复杂的 CLI 可以在此基础上构建(或直接使用 crate)
依赖项
~7–23MB
~298K SLoC