diff options
author | 2025-04-03 23:17:06 +0100 | |
---|---|---|
committer | 2025-04-03 23:17:06 +0100 | |
commit | 1af59efbb312b680b742bb84198c6ba18a79ec31 (patch) | |
tree | d024166e5520f3b83d25c1e0d48445bebe31534d /stanza/src/xep_0060 | |
parent | 20969bd8b9789c08303265ec263e02b5225348e6 (diff) | |
download | luz-1af59efbb312b680b742bb84198c6ba18a79ec31.tar.gz luz-1af59efbb312b680b742bb84198c6ba18a79ec31.tar.bz2 luz-1af59efbb312b680b742bb84198c6ba18a79ec31.zip |
feat(stanza): xep-0084: user avatar
Diffstat (limited to 'stanza/src/xep_0060')
-rw-r--r-- | stanza/src/xep_0060/event.rs | 18 | ||||
-rw-r--r-- | stanza/src/xep_0060/pubsub.rs | 18 |
2 files changed, 36 insertions, 0 deletions
diff --git a/stanza/src/xep_0060/event.rs b/stanza/src/xep_0060/event.rs index 4ef5a6c..1be011d 100644 --- a/stanza/src/xep_0060/event.rs +++ b/stanza/src/xep_0060/event.rs @@ -8,6 +8,8 @@ use peanuts::{ }; use crate::xep_0004::X; +#[cfg(feature = "xep_0084")] +use crate::xep_0084; #[cfg(feature = "xep_0172")] use crate::xep_0172::{self, Nick}; @@ -296,6 +298,10 @@ impl IntoElement for Item { pub enum Content { #[cfg(feature = "xep_0172")] Nick(Nick), + #[cfg(feature = "xep_0084")] + AvatarData(xep_0084::Data), + #[cfg(feature = "xep_0084")] + AvatarMetadata(xep_0084::Metadata), Unknown(Element), } @@ -304,6 +310,14 @@ impl FromElement for Content { match element.identify() { #[cfg(feature = "xep_0172")] (Some(xep_0172::XMLNS), "nick") => Ok(Content::Nick(Nick::from_element(element)?)), + #[cfg(feature = "xep_0084")] + (Some(xep_0084::data::XMLNS), "data") => { + Ok(Content::AvatarData(xep_0084::Data::from_element(element)?)) + } + #[cfg(feature = "xep_0084")] + (Some(xep_0084::metadata::XMLNS), "metadata") => Ok(Content::AvatarMetadata( + xep_0084::Metadata::from_element(element)?, + )), _ => Ok(Self::Unknown(element)), } } @@ -314,6 +328,10 @@ impl IntoElement for Content { match self { #[cfg(feature = "xep_0172")] Content::Nick(nick) => nick.builder(), + #[cfg(feature = "xep_0084")] + Content::AvatarData(data) => data.builder(), + #[cfg(feature = "xep_0084")] + Content::AvatarMetadata(metadata) => metadata.builder(), Content::Unknown(_e) => panic!("unknown content cannot be serialized"), } } diff --git a/stanza/src/xep_0060/pubsub.rs b/stanza/src/xep_0060/pubsub.rs index 25fc405..0f698dc 100644 --- a/stanza/src/xep_0060/pubsub.rs +++ b/stanza/src/xep_0060/pubsub.rs @@ -7,6 +7,8 @@ use peanuts::{ }; use crate::xep_0004::X; +#[cfg(feature = "xep_0084")] +use crate::xep_0084; #[cfg(feature = "xep_0172")] use crate::xep_0172::{self, Nick}; @@ -377,6 +379,10 @@ impl IntoElement for Item { pub enum Content { #[cfg(feature = "xep_0172")] Nick(Nick), + #[cfg(feature = "xep_0084")] + AvatarData(xep_0084::Data), + #[cfg(feature = "xep_0084")] + AvatarMetadata(xep_0084::Metadata), Unknown(Element), } @@ -385,6 +391,14 @@ impl FromElement for Content { match element.identify() { #[cfg(feature = "xep_0172")] (Some(xep_0172::XMLNS), "nick") => Ok(Content::Nick(Nick::from_element(element)?)), + #[cfg(feature = "xep_0084")] + (Some(xep_0084::data::XMLNS), "data") => { + Ok(Content::AvatarData(xep_0084::Data::from_element(element)?)) + } + #[cfg(feature = "xep_0084")] + (Some(xep_0084::metadata::XMLNS), "metadata") => Ok(Content::AvatarMetadata( + xep_0084::Metadata::from_element(element)?, + )), _ => Ok(Self::Unknown(element)), } } @@ -395,6 +409,10 @@ impl IntoElement for Content { match self { #[cfg(feature = "xep_0172")] Content::Nick(nick) => nick.builder(), + #[cfg(feature = "xep_0084")] + Content::AvatarData(data) => data.builder(), + #[cfg(feature = "xep_0084")] + Content::AvatarMetadata(metadata) => metadata.builder(), Content::Unknown(_e) => panic!("unknown content cannot be serialized"), } } |