Brokaw
📰 A Usenet/NNTP library. More at 11! 📰
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)