19 个版本 (6 个稳定版)

1.5.0 2024 年 5 月 22 日
1.3.0 2023 年 7 月 3 日
1.1.0 2023 年 2 月 12 日
0.7.6 2022 年 8 月 9 日
0.7.4 2022 年 7 月 26 日

#115 in HTTP 服务器

Download history 73/week @ 2024-04-27 137/week @ 2024-05-04 85/week @ 2024-05-11 166/week @ 2024-05-18 26/week @ 2024-05-25 2/week @ 2024-06-01 10/week @ 2024-06-08 4/week @ 2024-06-15 129/week @ 2024-06-22 10/week @ 2024-06-29 2/week @ 2024-07-06 8/week @ 2024-07-13 38/week @ 2024-07-20 11/week @ 2024-07-27 27/week @ 2024-08-03 39/week @ 2024-08-10

117 每月下载量
acorns 中使用

Apache-2.0

31KB
543

jira_query

Crates.io Apache-2.0 license Documentation

CI tests Dependency status

通过远程 Jira 实例访问问题。

描述

jira_query crate 是一个 Rust 库,可以使用其 REST API 查询 Jira 实例。它返回请求问题的强类型表示。

此库不提供创建或修改问题的功能。访问是只读的。

用法

基本匿名查询

未登录,搜索单个工单并检查其优先级

use tokio;
use jira_query::JiraInstance;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let jira = JiraInstance::at("https://issues.redhat.com".to_string())?;

    let issue = jira.issue("CS-1113").await?;

    assert_eq!(issue.fields.priority.name, "Normal");

    Ok(())
}

高级查询

使用 API 密钥登录 Jira。搜索所有优先级为 Blocker 的 CentOS Stream 工单。检查是否有多于一个工单

use tokio;
use jira_query::{Auth, JiraInstance, Pagination};

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let jira = JiraInstance::at("https://bugzilla.redhat.com".to_string())?
        .authenticate(Auth::ApiKey("My API Key".to_string()))
        .paginate(Pagination::ChunkSize(32));

    let query = r#"project="CentOS Stream" AND priority=Blocker"#;

    let issues = jira.search(query).await?;

    assert!(issues.len() > 1);

    Ok(())
}

关于语义版本控制的一个注释

此 crate 保留在次要版本中对 Jira 结构体进行有限破坏性更改的权利 (X.Y)。

原因是官方 Jira 文档没有指定 JSON 身体中哪些字段是可选的 (Option<T>) 以及哪些是必填的 (T)。而不是将所有字段公开为可选的,此 crate 尝试在测试中证明字段为必填的,直到证明否则。因此,次要版本必须偶尔将必填字段转换为可选字段。

另请参阅

依赖关系

~5–16MB
~232K SLoC