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 服务器
117 每月下载量
在 acorns 中使用
31KB
543 行
jira_query
通过远程 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 尝试在测试中证明字段为必填的,直到证明否则。因此,次要版本必须偶尔将必填字段转换为可选字段。
另请参阅
bugzilla_query
,与 Bugzilla 相似的接口
依赖关系
~5–16MB
~232K SLoC