#pager-duty #client #async #api-client #proc #proc-macro #praiya

macro praiya-macro

Praiya API 客户端的过程宏

3 个版本

0.1.1 2022 年 10 月 30 日
0.1.0 2022 年 9 月 8 日
0.1.0-rc12022 年 8 月 22 日

9#pager-duty 中排名 9

每月 32 次下载
praiya 中使用

Apache-2.0

8KB
126

crates.io license docs GitHub workflow

Praiya:Rust 的异步 PagerDuty API

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

安装

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

[dependencies]
praiya = "*"

API

文档

API 文档

Praiya 目前已实现了以下 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

模拟测试服务器

模拟服务器在官方PagerDuty API方案的分支上,使用Prism项目运行,以维护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 License 2.0许可证授权

许可证:Apache-2.0

依赖关系

~1.5MB
~35K SLoC