client: add new_with_jid() to reuse parsed Jid

Should fix Gitlab issue #2
This commit is contained in:
Astro 2019-01-14 00:02:02 +01:00
commit 49c0f6e7a6

View file

@ -45,12 +45,19 @@ impl Client {
/// and yield events. /// and yield events.
pub fn new(jid: &str, password: &str) -> Result<Self, JidParseError> { pub fn new(jid: &str, password: &str) -> Result<Self, JidParseError> {
let jid = Jid::from_str(jid)?; let jid = Jid::from_str(jid)?;
let client = Self::new_with_jid(jid, password);
Ok(client)
}
/// Start a new client given that the JID is already parsed.
pub fn new_with_jid(jid: Jid, password: &str) -> Self {
let password = password.to_owned(); let password = password.to_owned();
let connect = Self::make_connect(jid.clone(), password.clone()); let connect = Self::make_connect(jid.clone(), password.clone());
Ok(Client { let client = Client {
jid, jid,
state: ClientState::Connecting(Box::new(connect)), state: ClientState::Connecting(Box::new(connect)),
}) };
client
} }
fn make_connect(jid: Jid, password: String) -> impl Future<Item = XMPPStream, Error = Error> { fn make_connect(jid: Jid, password: String) -> impl Future<Item = XMPPStream, Error = Error> {