bodhi 2.2.0

bodhi REST API client
Documentation
use std::io::{stdin, stdout, Write};
use std::time::Duration;

use bodhi::{BodhiClientBuilder, Update, UpdateIDQuery, UpdateRequest};

fn read_username() -> String {
    print!("FAS username: ");
    stdout().flush().unwrap();

    let mut username = String::new();
    stdin().read_line(&mut username).unwrap();

    username.trim().to_string()
}

#[tokio::main]
async fn main() -> Result<(), String> {
    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("debug")).init();

    let username = read_username();
    let password = rpassword::prompt_password("FAS password: ").unwrap();

    let bodhi = BodhiClientBuilder::staging()
        .authentication(&username, &password)
        .timeout(Duration::from_secs(60))
        .build()
        .await
        .unwrap();

    let update: Update = bodhi
        .request(&UpdateIDQuery::new("FEDORA-2019-586c873435"))
        .await
        .map_err(|error| error.to_string())?;

    let update_requester = update.request(UpdateRequest::Stable);

    let response = bodhi.request(&update_requester).await;

    // check the response whether editing the update was successful
    let edited_update: Update = response.map_err(|error| error.to_string())?;

    println!("Update request changed:");
    println!("{edited_update:#?}");

    Ok(())
}