Brokaw

📰 A Usenet/NNTP library. More at 11! 📰

GitHub Actions Crates.io version docs.rs docs
Brokaw is a typed Usenet library for the dozens of people still reading Netnews. It is very much in development and provides **no guarantees about stability**. Brokaw (mostly) implements [RFC 3977](https://tools.ietf.org/html/rfc3977) and several popular extensions. ## Getting Started ```toml [dependencies] brokaw = "*" ``` ```rust use brokaw::client::ClientConfig; fn main() -> Result<(), Box> { let client = ClientConfig::default().connect(("news.mozilla.org", 119))?; client.capabilities().iter() .for_each(|c| println!("{}", c)); Ok(()) } ``` Check out in the repo [the examples](./examples) as well! ## Features * TLS (aka `NNTPS`) courtesy of [`native-tls`](https://crates.io/crates/native-tls) * A high-level client API (`NntpClient`) for simple interactions with news servers * A low-level connection API (`NntpConnection`) for more specialized use cases * `AUTHINFO USER/PASS` Authentication ([RFC 4643] * Typed commands and responses * ~All~ Most commands in [RFC 3977] (`POST`, `NEWGROUP`, `NEWNEWS`, and `LISTGROUP` have yet to be implemented) ## Missing Features * Compression (RFC 8054, Astraweb, Giganews, etc) * STARTTLS ([RFC 4642](https://tools.ietf.org/html/rfc4642)) * SASL Authentication ([RFC 4643]) * Most of [RFC 2980]. `XHDR` and `XOVER` are supported * Connection pools, fine grained connection tuning * Async connection/client * Article posting [RFC 2980]: (https://tools.ietf.org/html/rfc4643) [RFC 3977]: https://tools.ietf.org/html/rfc3977 [RFC 4642]: https://tools.ietf.org/html/rfc4642 [RFC 4643]: (https://tools.ietf.org/html/rfc4643)