diff --git a/tokio-xmpp/src/client/async_client.rs b/tokio-xmpp/src/client/async_client.rs index 34171d6..4f85185 100644 --- a/tokio-xmpp/src/client/async_client.rs +++ b/tokio-xmpp/src/client/async_client.rs @@ -8,6 +8,7 @@ use xmpp_parsers::{ns, Element, Jid}; use super::connect::client_login; use crate::connect::{AsyncReadAndWrite, ServerConnector}; use crate::event::Event; +use crate::stream_features::StreamFeatures; use crate::xmpp_codec::Packet; use crate::xmpp_stream::{add_stanza_id, XMPPStream}; use crate::{Error, ProtocolError}; @@ -81,6 +82,14 @@ impl Client { .await } + /// Get the stream features (``) of the underlying stream + pub fn get_stream_features(&self) -> Option<&StreamFeatures> { + match self.state { + ClientState::Connected(ref stream) => Some(&stream.stream_features), + _ => None, + } + } + /// End connection by sending `` /// /// You may expect the server to respond with the same. This diff --git a/tokio-xmpp/src/client/simple_client.rs b/tokio-xmpp/src/client/simple_client.rs index 3f2b07c..19ab2f9 100644 --- a/tokio-xmpp/src/client/simple_client.rs +++ b/tokio-xmpp/src/client/simple_client.rs @@ -5,6 +5,7 @@ use tokio_stream::StreamExt; use xmpp_parsers::{ns, Element, Jid}; use crate::connect::ServerConnector; +use crate::stream_features::StreamFeatures; use crate::xmpp_codec::Packet; use crate::xmpp_stream::{add_stanza_id, XMPPStream}; use crate::Error; @@ -53,6 +54,11 @@ impl Client { .await } + /// Get the stream features (``) of the underlying stream + pub fn get_stream_features(&self) -> &StreamFeatures { + &self.stream.stream_features + } + /// End connection by sending `` /// /// You may expect the server to respond with the same. This diff --git a/tokio-xmpp/src/stream_features.rs b/tokio-xmpp/src/stream_features.rs index 6b97ec3..63263f3 100644 --- a/tokio-xmpp/src/stream_features.rs +++ b/tokio-xmpp/src/stream_features.rs @@ -8,6 +8,7 @@ use xmpp_parsers::{ns, Element}; /// /// TODO: should this rather go into xmpp-parsers, kept in a decoded /// struct? +#[derive(Debug)] pub struct StreamFeatures(pub Element); impl StreamFeatures {