From f3bdd599425424de8dbff5e4e89b7bcdef205c85 Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Thu, 3 Apr 2025 06:15:55 +0100 Subject: feat(stanza): xep-0390: entity capabilities 2.0 --- stanza/src/xep_0390.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 stanza/src/xep_0390.rs (limited to 'stanza/src/xep_0390.rs') diff --git a/stanza/src/xep_0390.rs b/stanza/src/xep_0390.rs new file mode 100644 index 0000000..a05a659 --- /dev/null +++ b/stanza/src/xep_0390.rs @@ -0,0 +1,26 @@ +use crate::xep_0300::Hash; +use peanuts::{ + element::{FromElement, IntoElement}, + Element, +}; + +pub const XMLNS: &str = "urn:xmpp:caps"; + +// TODO: have a vec which guarantees at least one item +#[derive(Debug, Clone)] +pub struct C(Vec); + +impl FromElement for C { + fn from_element(mut element: Element) -> peanuts::element::DeserializeResult { + element.check_name("c")?; + element.check_namespace(XMLNS)?; + + Ok(Self(element.pop_children()?)) + } +} + +impl IntoElement for C { + fn builder(&self) -> peanuts::element::ElementBuilder { + Element::builder("c", Some(XMLNS)).push_children(self.0.clone()) + } +} -- cgit