ops 0.6.0

Adds operational endpoints to your application
Documentation
use ops::{async_trait, server, CheckResponse, Checker, NamedChecker, Result, StatusBuilder};

const APP_NAME: &str = "example";
const APP_DESC: &str = "An example app with an ops server";
const APP_SHA: &str = "12561012a04f945852cf0171da516a9ffc709e76";

const HOST: &str = "0.0.0.0:3000";

struct NoopChecker {}

#[async_trait]
impl Checker for NoopChecker {
    async fn check(&self) -> CheckResponse {
        CheckResponse::healthy("noop is always healthy")
    }
}

#[tokio::main]
async fn main() -> Result<()> {
    let noop = NoopChecker {};

    let healthchecks = StatusBuilder::healthchecks(APP_NAME, APP_DESC)
        .checker(NamedChecker::new("noop", Box::new(noop)))
        .revision(APP_SHA);

    let server = server(HOST.parse()?, healthchecks);

    println!("Serving http://{}", HOST);

    tokio::try_join!(server)?;

    Ok(())
}