Moved starttls connector to tokio_xmpp::connect::starttls module

xmppftw created

Change summary

tokio-xmpp/src/client/async_client.rs |  4 +-
tokio-xmpp/src/connect/mod.rs         |  4 +
tokio-xmpp/src/connect/starttls.rs    | 50 ++++++++++++++++++++++++++--
tokio-xmpp/src/connect/tcp.rs         |  1 
tokio-xmpp/src/lib.rs                 |  6 --
tokio-xmpp/src/starttls/error.rs      | 49 ----------------------------
xmpp/src/builder.rs                   | 10 ++++-
7 files changed, 59 insertions(+), 65 deletions(-)

Detailed changes

tokio-xmpp/src/client/async_client.rs 🔗

@@ -7,11 +7,11 @@ use tokio::task::JoinHandle;
 use xmpp_parsers::{jid::Jid, ns, stream_features::StreamFeatures};
 
 use super::connect::client_login;
+#[cfg(feature = "starttls")]
+use crate::connect::starttls::ServerConfig;
 use crate::connect::{AsyncReadAndWrite, ServerConnector};
 use crate::error::{Error, ProtocolError};
 use crate::event::Event;
-#[cfg(feature = "starttls")]
-use crate::starttls::ServerConfig;
 use crate::xmpp_codec::Packet;
 use crate::xmpp_stream::{add_stanza_id, XMPPStream};
 #[cfg(feature = "starttls")]

tokio-xmpp/src/connect/mod.rs 🔗

@@ -17,7 +17,9 @@ use xmpp_parsers::jid::Jid;
 use crate::xmpp_stream::XMPPStream;
 use crate::Error;
 
-#[cfg(feature="insecure-tcp")]
+#[cfg(feature = "starttls")]
+pub mod starttls;
+#[cfg(feature = "insecure-tcp")]
 pub mod tcp;
 
 /// trait returned wrapped in XMPPStream by ServerConnector

tokio-xmpp/src/starttls/mod.rs → tokio-xmpp/src/connect/starttls.rs 🔗

@@ -1,5 +1,14 @@
 //! `starttls::ServerConfig` provides a `ServerConnector` for starttls connections
 
+#[cfg(feature = "tls-native")]
+use native_tls::Error as TlsError;
+use std::error::Error as StdError;
+use std::fmt;
+#[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
+use tokio_rustls::rustls::pki_types::InvalidDnsNameError;
+#[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
+use tokio_rustls::rustls::Error as TlsError;
+
 use futures::{sink::SinkExt, stream::StreamExt};
 
 #[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
@@ -35,10 +44,6 @@ use crate::{
     AsyncClient,
 };
 
-use self::error::Error as StartTlsError;
-
-pub mod error;
-
 /// AsyncClient that connects over StartTls
 pub type StartTlsAsyncClient = AsyncClient<ServerConfig>;
 
@@ -162,3 +167,40 @@ pub async fn starttls<S: AsyncRead + AsyncWrite + Unpin>(
 
     get_tls_stream(xmpp_stream).await
 }
+
+/// StartTLS ServerConnector Error
+#[derive(Debug)]
+pub enum StartTlsError {
+    /// TLS error
+    Tls(TlsError),
+    #[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
+    /// DNS name parsing error
+    DnsNameError(InvalidDnsNameError),
+}
+
+impl ServerConnectorError for StartTlsError {}
+
+impl fmt::Display for StartTlsError {
+    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+        match self {
+            Self::Tls(e) => write!(fmt, "TLS error: {}", e),
+            #[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
+            Self::DnsNameError(e) => write!(fmt, "DNS name error: {}", e),
+        }
+    }
+}
+
+impl StdError for StartTlsError {}
+
+impl From<TlsError> for StartTlsError {
+    fn from(e: TlsError) -> Self {
+        Self::Tls(e)
+    }
+}
+
+#[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
+impl From<InvalidDnsNameError> for StartTlsError {
+    fn from(e: InvalidDnsNameError) -> Self {
+        Self::DnsNameError(e)
+    }
+}

tokio-xmpp/src/connect/tcp.rs 🔗

@@ -42,4 +42,3 @@ impl Component<TcpServerConnector> {
         Self::new_with_connector(jid, password, TcpServerConnector::new(server)).await
     }
 }
-

tokio-xmpp/src/lib.rs 🔗

@@ -20,8 +20,6 @@ compile_error!(
     "when starttls feature enabled one of tls-native and tls-rust features must be enabled."
 );
 
-#[cfg(feature = "starttls")]
-pub mod starttls;
 mod stream_start;
 mod xmpp_codec;
 pub use crate::xmpp_codec::{Packet, XmppCodec};
@@ -31,9 +29,7 @@ mod client;
 pub mod connect;
 pub mod xmpp_stream;
 
-pub use client::{
-    async_client::{Client as AsyncClient, Config as AsyncConfig},
-};
+pub use client::async_client::{Client as AsyncClient, Config as AsyncConfig};
 mod component;
 pub use crate::component::Component;
 /// Detailed error types

tokio-xmpp/src/starttls/error.rs 🔗

@@ -1,49 +0,0 @@
-//! StartTLS ServerConnector Error
-
-#[cfg(feature = "tls-native")]
-use native_tls::Error as TlsError;
-use std::error::Error as StdError;
-use std::fmt;
-#[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
-use tokio_rustls::rustls::pki_types::InvalidDnsNameError;
-#[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
-use tokio_rustls::rustls::Error as TlsError;
-
-use super::ServerConnectorError;
-
-/// StartTLS ServerConnector Error
-#[derive(Debug)]
-pub enum Error {
-    /// TLS error
-    Tls(TlsError),
-    #[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
-    /// DNS name parsing error
-    DnsNameError(InvalidDnsNameError),
-}
-
-impl ServerConnectorError for Error {}
-
-impl fmt::Display for Error {
-    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
-        match self {
-            Self::Tls(e) => write!(fmt, "TLS error: {}", e),
-            #[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
-            Self::DnsNameError(e) => write!(fmt, "DNS name error: {}", e),
-        }
-    }
-}
-
-impl StdError for Error {}
-
-impl From<TlsError> for Error {
-    fn from(e: TlsError) -> Self {
-        Self::Tls(e)
-    }
-}
-
-#[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
-impl From<InvalidDnsNameError> for Error {
-    fn from(e: InvalidDnsNameError) -> Self {
-        Self::DnsNameError(e)
-    }
-}

xmpp/src/builder.rs 🔗

@@ -52,12 +52,16 @@ pub struct ClientBuilder<'a, C: ServerConnector> {
 }
 
 #[cfg(any(feature = "starttls-rust", feature = "starttls-native"))]
-impl ClientBuilder<'_, tokio_xmpp::starttls::ServerConfig> {
+impl ClientBuilder<'_, tokio_xmpp::connect::starttls::ServerConfig> {
     pub fn new<'a>(
         jid: BareJid,
         password: &'a str,
-    ) -> ClientBuilder<'a, tokio_xmpp::starttls::ServerConfig> {
-        Self::new_with_connector(jid, password, tokio_xmpp::starttls::ServerConfig::UseSrv)
+    ) -> ClientBuilder<'a, tokio_xmpp::connect::starttls::ServerConfig> {
+        Self::new_with_connector(
+            jid,
+            password,
+            tokio_xmpp::connect::starttls::ServerConfig::UseSrv,
+        )
     }
 }