@@ -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<C: ServerConnector> Client<C> {
.await
}
+ /// Get the stream features (`<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 `</stream:stream>`
///
/// You may expect the server to respond with the same. This
@@ -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<C: ServerConnector> Client<C> {
.await
}
+ /// Get the stream features (`<stream:features/>`) of the underlying stream
+ pub fn get_stream_features(&self) -> &StreamFeatures {
+ &self.stream.stream_features
+ }
+
/// End connection by sending `</stream:stream>`
///
/// You may expect the server to respond with the same. This
@@ -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 {