implement a part of Client
lumi
created
Change summary
src/client.rs | 45 ++++++++++++++++++++++++++++++++++++++++-----
src/lib.rs | 1 +
2 files changed, 41 insertions(+), 5 deletions(-)
Detailed changes
@@ -1,11 +1,46 @@
use jid::Jid;
+use transport::SslTransport;
+use error::Error;
-pub struct XmppClient {
- transport: SslTransport,
+pub struct ClientBuilder {
+ jid: Jid,
+ host: Option<String>,
+ port: u16,
}
-impl XmppClient {
- pub fn connect(jid: Jid) -> XmppClient {
- unimplemented!();
+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<Client, Error> {
+ 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 Client {
+}
@@ -5,3 +5,4 @@ pub mod ns;
pub mod transport;
pub mod error;
pub mod jid;
+pub mod client;