aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib.rs
blob: 681d1d0e41fd3aca8afe0f9ce7ddb5a8a28627c8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#![allow(unused_must_use)]
// #![feature(let_chains)]

// TODO: logging (dropped errors)
pub mod connection;
pub mod error;
pub mod jabber;
pub mod jid;
pub mod stanza;

pub use connection::Connection;
use connection::Tls;
pub use error::Error;
pub use jabber::Jabber;
pub use jid::JID;

pub type Result<T> = std::result::Result<T, Error>;

pub async fn login<J: AsRef<str>, P: AsRef<str>>(jid: J, password: P) -> Result<Jabber<Tls>> {
    Ok(Connection::connect_user(jid, password.as_ref().to_string())
        .await?
        .ensure_tls()
        .await?
        .negotiate()
        .await?)
}

#[cfg(test)]
mod tests {
    #[tokio::test]
    async fn test_login() {
        crate::login("test@blos.sm/clown", "slayed").await.unwrap();
    }
}