brokaw 0.2.0

📰 An NNTP client liberary. More at 11! 📰
Documentation
use std::time::Duration;

use brokaw::types::command as cmd;
use brokaw::{ClientConfig, ConnectionConfig};

fn main() -> anyhow::Result<()> {
    env_logger::from_env(env_logger::Env::default().default_filter_or("debug")).init();

    let mut client = ClientConfig::default()
        .connection_config(
            ConnectionConfig::default()
                .read_timeout(Some(Duration::from_secs(10)))
                .to_owned(),
        )
        .group(Some("mozilla.dev.platform"))
        .connect(("news.mozilla.org", 119))?;

    let highest_article = client.group().unwrap().high;

    let article = client
        .article(cmd::Article::Number(highest_article))
        .and_then(|a| a.to_text())?;

    println!("~~~ 📰 `{}` ~~~", article.message_id());
    println!("~~~ Headers ~~~");
    article.headers().iter().for_each(|header| {
        println!("Header {} --> {:?}", header.name, header.content);
    });

    println!("~~~ Body ~~~");
    article.body().iter().for_each(|line| println!("{}", line));
    println!("~~~ 👋🏾 ~~~");

    Ok(())
}