diff --git a/src/client.rs b/src/client.rs index 273b3f40..9cb5a7ad 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,11 +1,46 @@ use jid::Jid; +use transport::SslTransport; +use error::Error; -pub struct XmppClient { +pub struct ClientBuilder { + jid: Jid, + host: Option, + port: u16, +} + +impl ClientBuilder { + pub fn new(jid: Jid) -> ClientBuilder { + ClientBuilder { + jid: jid, + host: None, + port: 5222, + } + } + + pub fn host(mut self, host: String) -> ClientBuilder { + self.host = Some(host); + self + } + + pub fn port(mut self, port: u16) -> ClientBuilder { + self.port = port; + self + } + + pub fn connect(self) -> Result { + let host = &self.host.unwrap_or(self.jid.domain.clone()); + let transport = SslTransport::connect(host, self.port)?; + Ok(Client { + jid: self.jid, + transport: transport + }) + } +} + +pub struct Client { + jid: Jid, transport: SslTransport, } -impl XmppClient { - pub fn connect(jid: Jid) -> XmppClient { - unimplemented!(); - } +impl Client { } diff --git a/src/lib.rs b/src/lib.rs index 7b83b351..ca596a6f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,3 +5,4 @@ pub mod ns; pub mod transport; pub mod error; pub mod jid; +pub mod client;