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命令行工具

Download history 5/week @ 2024-05-17 2/week @ 2024-05-24 414/week @ 2024-05-31 140/week @ 2024-06-07 5/week @ 2024-06-14 9/week @ 2024-07-05 150/week @ 2024-07-26 19/week @ 2024-08-02

169 每月下载量
gooseberry 中使用

MIT 许可证

88KB
1.5K SLoC

Crates.io Docs.rs CI GitHub release dependency status

是 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.preferencesUserProfile.features的含义。
  • CLI 仅将输出以 JSON 格式输出,这是否可以?更复杂的 CLI 可以在此基础上构建(或直接使用 crate)

依赖项

~7–23MB
~298K SLoC