From 9ce3827a7d25714d17f266f0f50bb29f41090175 Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Tue, 1 Apr 2025 21:40:23 +0100 Subject: feat(stanza): xep-0131: stanza headers --- stanza/src/client/message.rs | 12 ++++++++++++ stanza/src/client/presence.rs | 12 ++++++++++++ 2 files changed, 24 insertions(+) (limited to 'stanza/src/client') diff --git a/stanza/src/client/message.rs b/stanza/src/client/message.rs index 192390b..e521613 100644 --- a/stanza/src/client/message.rs +++ b/stanza/src/client/message.rs @@ -6,6 +6,8 @@ use peanuts::{ DeserializeError, Element, XML_NS, }; +#[cfg(feature = "xep_0131")] +use crate::xep_0131::Headers; #[cfg(feature = "xep_0203")] use crate::xep_0203::Delay; @@ -25,6 +27,8 @@ pub struct Message { pub thread: Option, #[cfg(feature = "xep_0203")] pub delay: Option, + #[cfg(feature = "xep_0131")] + pub headers: Option, } impl FromElement for Message { @@ -45,6 +49,9 @@ impl FromElement for Message { #[cfg(feature = "xep_0203")] let delay = element.child_opt()?; + #[cfg(feature = "xep_0131")] + let headers = element.child_opt()?; + Ok(Message { from, id, @@ -56,6 +63,8 @@ impl FromElement for Message { thread, #[cfg(feature = "xep_0203")] delay, + #[cfg(feature = "xep_0131")] + headers, }) } } @@ -81,6 +90,9 @@ impl IntoElement for Message { #[cfg(feature = "xep_0203")] let builder = builder.push_child_opt(self.delay.clone()); + #[cfg(feature = "xep_0131")] + let builder = builder.push_child_opt(self.headers.clone()); + builder } } diff --git a/stanza/src/client/presence.rs b/stanza/src/client/presence.rs index ae38756..8fb96be 100644 --- a/stanza/src/client/presence.rs +++ b/stanza/src/client/presence.rs @@ -6,6 +6,8 @@ use peanuts::{ DeserializeError, Element, XML_NS, }; +#[cfg(feature = "xep_0131")] +use crate::xep_0131::Headers; #[cfg(feature = "xep_0203")] use crate::xep_0203::Delay; @@ -24,6 +26,8 @@ pub struct Presence { pub priority: Option, #[cfg(feature = "xep_0203")] pub delay: Option, + #[cfg(feature = "xep_0131")] + pub headers: Option, // TODO: ##other // other: Vec, pub errors: Vec, @@ -48,6 +52,9 @@ impl FromElement for Presence { #[cfg(feature = "xep_0203")] let delay = element.child_opt()?; + #[cfg(feature = "xep_0131")] + let headers = element.child_opt()?; + Ok(Presence { from, id, @@ -60,6 +67,8 @@ impl FromElement for Presence { errors, #[cfg(feature = "xep_0203")] delay, + #[cfg(feature = "xep_0131")] + headers, }) } } @@ -80,6 +89,9 @@ impl IntoElement for Presence { #[cfg(feature = "xep_0203")] let builder = builder.push_child_opt(self.delay.clone()); + #[cfg(feature = "xep_0131")] + let builder = builder.push_child_opt(self.headers.clone()); + builder } } -- cgit