xmpp-rs 0.1.2

A work in progress xmpp lib
Documentation
# xmpp-rs

`xmpp-rs` is an XMPP client library (for now). Under active development.

[![Build Status](https://travis-ci.org/Freyskeyd/xmpp-rs.svg?branch=master)](https://travis-ci.org/Freyskeyd/xmpp-rs)

## Install

This library is splitted in 3 crates (`client`, `server`, `proto`). As defined by the naming, you can use every crate
independently.

- `xmpp-client`: will allow you to build a client.
- `xmpp-server`: is an implementation of XMPP on server side.
- `xmpp-rs`: Grab both client and server in a single crate.

**Cargo.toml**

```toml
xmpp-rs = "0.1"
```

```rust
// Client
extern crate xmpp;

```
## Build

To build xmpp-rs:

`cargo build --release`

## ROADMAP

### Client roadmap

- [ ] :rocket: Root implementation
    - [ ] **TCP Connection**: Base of all the interaction, we need to provide a way to connect to different kind of
      servers.
        - [x] Can connect to IP
        - [x] Can connect to domain
        - [ ] Can connect to untrusted domain
    - [x] **TLS Connection and negociation**: TLS connection is mandatory.
    - [x] **PLAIN authentication**: Authentification with a PLAIN mechanism must be possible.
    - [ ] **Ping IQ client**: We need to be able to send a ping to the server and listen for the anwser.
    - [x] **Send First presence**: We need to be able to send our presence to the server.
- [ ] :satellite: Components
    - [ ] **SASL**: Handle every needed SASL auth mechanisms
- [ ] :electric_plug: Plugins
    - [ ] **Message**: Handle all incomming/outcomming user or server message.
    - [ ] **IQ**: Handle all IQ requests/responses.
    - [ ] **Presence**: Offer a way to manage user's presence.
    - [ ] **MUC**: Activation option to deal with groupchat.
    - [ ] **MAM**: Activation option to retrieve history.

### Server roadmap

- [ ] :rocket: Root implementation
    - [ ] **TCP Connection**: Able to accept TCP connection from clients
    - [ ] **Open stream reading**: Listen to an open `stream` stanza and respond to it

## XEPs

- [ ] [XEP-0199: XMPP Ping](https://xmpp.org/extensions/xep-0199.html)
- [ ] [XEP-0004: Data Forms](https://xmpp.org/extensions/xep-0004.html)
- [ ] [XEP-0030: Service Discovery](https://xmpp.org/extensions/xep-0030.html)
- [ ] [XEP-0048: Bookmarks](https://xmpp.org/extensions/xep-0048.html)
- [ ] [XEP-0049: Private XML Storage](https://xmpp.org/extensions/xep-0049.html)

## License

xmpp-rs is primarily distributed under the terms of both the MIT license
and the Apache License (Version 2.0), with portions covered by various
BSD-like licenses.

See LICENSE-APACHE, and LICENSE-MIT for details.