#incident #pager-duty #client #api-client #response #async #mocking

praiya

异步的 PagerDuty API 客户端

8 个不稳定版本 (3 个破坏性更新)

0.4.0 2022年11月4日
0.3.2 2022年10月30日
0.2.1 2022年10月1日
0.2.0 2022年9月25日
0.1.0-rc12022年8月22日

#1361 in 网页编程

每月30次下载

Apache-2.0

1MB
19K SLoC

crates.io license docs GitHub workflow

帕利亚:Rust 的异步 PagerDuty API

帕利亚利用官方的 PagerDuty OpenAPI Swagger 规范 来生成模型和模拟服务器存根,以紧密匹配实际的 PagerDuty API 行为。帕利亚的异步范式在 HyperTokio 上运行,测试是在与 OpenAPI 规范响应匹配的 Prism 服务器上运行的。

安装

将以下内容添加到您的 Cargo.toml 文件中。

[dependencies]
praiya = "*"

API

文档

API 文档

帕利亚目前实现了以下 API 端点

  • abilities
  • add_ons
  • analytics
  • audit
  • business_services
  • escalation_policies
  • extension_schemas
  • extensions
  • incidents
  • log_entries
  • maintenance_windows
  • notifications
  • on_calls
  • priorities
  • response_plays
  • rulesets
  • schedules
  • service_dependencies
  • services
  • slack_connections
  • tags
  • teams
  • users
  • vendors

用法

连接到 PagerDuty API 服务器

一个新的 Praiya 客户端接受 PagerDuty API 令牌并将构建 SSL 上下文

praiya::Praiya::new("PAGERDUTY_TOKEN");

示例

列出事件

列出您组织中被触发和确认的事件

use praiya::ParamsBuilder;

use futures_util::TryStreamExt;

let pagerduty = praiya::Praiya::new("PAGERDUTY_TOKEN");

let mut opts_builder = praiya::endpoints::incidents::ListIncidentsParamsBuilder::new();
opts_builder.statuses(vec!["triggered", "acknowledged"]);
let opts = opts_builder.build();

async move {
    let incidents: Vec<praiya::models::Incident> = pagerduty
        .incidents("[email protected]")
        .list_incidents(opts)
        .try_collect()
        .await
        .expect("Unable to list PagerDuty incidents");
};

开发

欢迎贡献,请遵循以下建议。

构建存根

序列化存根是通过 Swagger 库 生成的。要生成这些文件,请使用以下

mvn -D org.slf4j.simpleLogger.defaultLogLevel=debug compiler:compile generate-resources

模拟测试服务器

模拟服务器使用 Prism 项目针对官方 PagerDuty API 规范的 分支 运行,以保持 Praiya CI 管道的稳定性。

使用 Docker Compose 启动模拟服务器

docker-compose up -d

或者使用 npm 库。

npm install -g @stoplight/prism-cli
# for example
prism mock https://raw.githubusercontent.com/fussybeaver/pagerduty-api-schema/praiya-master/reference/REST/openapiv3.json

测试

为了运行测试,将客户端指向适当的模拟服务器

对于 Slack API

env PAGERDUTY_API_ENDPOINT=http://127.0.0.1:8080 RUST_LOG=praiya=debug cargo test slack

对于默认 API

env PAGERDUTY_API_ENDPOINT=http://127.0.0.1:8081 RUST_LOG=praiya=debug cargo test incidents
env PAGERDUTY_API_ENDPOINT=http://127.0.0.1:8081 RUST_LOG=praiya=debug cargo test services
...

文档

此 README 是使用 cargo-readme 生成的

cargo readme --no-title > README.md

许可证

本软件根据自由的 Apache 许可证 2.0 许可

许可证:Apache-2.0

依赖项

~17–30MB
~538K SLoC