diff options
author | 2025-04-03 03:41:38 +0100 | |
---|---|---|
committer | 2025-04-03 03:41:38 +0100 | |
commit | 91f1994af940085d5d475a97820900ebbf0eb553 (patch) | |
tree | 6aab872f71d17a785d3d9286742fef38983d274c /stanza/src/xep_0172.rs | |
parent | 9ce3827a7d25714d17f266f0f50bb29f41090175 (diff) | |
download | luz-91f1994af940085d5d475a97820900ebbf0eb553.tar.gz luz-91f1994af940085d5d475a97820900ebbf0eb553.tar.bz2 luz-91f1994af940085d5d475a97820900ebbf0eb553.zip |
feat: better message handling, pep publish, xep_0172: nick
Diffstat (limited to '')
-rw-r--r-- | stanza/src/xep_0172.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/stanza/src/xep_0172.rs b/stanza/src/xep_0172.rs new file mode 100644 index 0000000..1c24200 --- /dev/null +++ b/stanza/src/xep_0172.rs @@ -0,0 +1,30 @@ +use peanuts::{ + element::{FromElement, IntoElement}, + Element, +}; + +pub const XMLNS: &str = "http://jabber.org/protocol/nick"; + +#[derive(Debug, Clone)] +pub struct Nick(pub String); + +impl FromElement for Nick { + fn from_element(mut element: peanuts::Element) -> peanuts::element::DeserializeResult<Self> { + element.check_name("nick")?; + element.check_namespace(XMLNS)?; + + Ok(Self(element.pop_value_opt()?.unwrap_or_default())) + } +} + +impl IntoElement for Nick { + fn builder(&self) -> peanuts::element::ElementBuilder { + let builder = Element::builder("nick", Some(XMLNS)); + + if self.0.is_empty() { + builder + } else { + builder.push_text(self.0.clone()) + } + } +} |