rustmann 0.8.0

Rust/Tokio client for Riemann
Documentation
use futures::stream::StreamExt;

use tokio::io::stdin;
use tokio::sync::mpsc;
use tokio_util::codec::{FramedRead, LinesCodec};

use rustmann::{EventBuilder, RiemannClient, RiemannClientError, RiemannClientOptions};

#[tokio::main]
async fn main() -> Result<(), RiemannClientError> {
    let client = RiemannClient::new(&RiemannClientOptions::default());
    let mut input = FramedRead::new(stdin(), LinesCodec::new());

    let (tx, mut rx) = mpsc::unbounded_channel();

    tokio::spawn(async move {
        while let Some(line_result) = input.next().await {
            if tx.send(line_result).is_err() {
                break;
            };
        }
    });

    while let Some(Ok(line)) = rx.recv().await {
        if line == "quit" {
            break;
        }

        let event = EventBuilder::new()
            .host("thinkless")
            .service("rustmann_interactive")
            .description(line)
            .build();

        let response = client.send_events(vec![event]).await;
        println!("{:?}", response);
    }
    Ok(())
}