aboutsummaryrefslogtreecommitdiffstats
path: root/stanza/src/xep_0060
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-04-03 23:17:06 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-04-03 23:17:06 +0100
commit1af59efbb312b680b742bb84198c6ba18a79ec31 (patch)
treed024166e5520f3b83d25c1e0d48445bebe31534d /stanza/src/xep_0060
parent20969bd8b9789c08303265ec263e02b5225348e6 (diff)
downloadluz-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.rs18
-rw-r--r--stanza/src/xep_0060/pubsub.rs18
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"),
}
}