Expand description
§Praiya: an async PagerDuty API for Rust
Praiya leverages the official PagerDuty OpenAPI swagger specification to generate models and mock server stubs, in order to closely match the real-world PagerDuty API behaviour. Praiya’s async paradigm runs on Hyper and Tokio, tests are run against a Prism server that matches the OpenAPI specification responses.
§Install
Add the following to your Cargo.toml file.
[dependencies]
praiya = "*"§API
§Documentation
Praiya has currently implemented the following API endpoints:
- 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
§Usage
§Connecting to the PagerDuty API server
A new Praiya client takes the PagerDuty API token and will build an SSL context:
praiya::Praiya::new("PAGERDUTY_TOKEN");
§Examples
§Listing incidents
To list triggered and acknowledged incidents in your organisation:
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("from@example.com")
.list_incidents(opts)
.try_collect()
.await
.expect("Unable to list PagerDuty incidents");
};§Development
Contributions are welcome, please observe the following advice.
§Building the stubs
Serialization stubs are generated through the Swagger library. To generate these files, use the following:
mvn -D org.slf4j.simpleLogger.defaultLogLevel=debug compiler:compile generate-resources§Mock test server
The mock servers run with the Prism project against a forked branch of the official PagerDuty API schema, in order to maintain stability of the Praiya CI pipelines.
Mock servers are started with Docker Compose:
docker-compose up -dor alternatively use the npm library.
npm install -g @stoplight/prism-cli
# for example
prism mock https://raw.githubusercontent.com/fussybeaver/pagerduty-api-schema/praiya-master/reference/REST/openapiv3.json§Tests
In order to run tests, point the client to the appropriate mock server:
For the slack API:
env PAGERDUTY_API_ENDPOINT=http://127.0.0.1:8080 RUST_LOG=praiya=debug cargo test slackFor the default API’s:
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
...§Documentation
This README is generated with cargo-readme
cargo readme --no-title > README.md§License
This software is licensed under the liberal Apache License 2.0
Re-exports§
pub use default_models as models;pub use endpoints as api;
Modules§
- auth
- default_
models - endpoints
- Endpoints module and
PerPagestruct/impl - errors
- slack_
models
Structs§
Constants§
- DEFAULT_
PAGERDUTY_ API_ LIMIT - Default PagerDuty limit parameter