xmpp-parsers: Use xso for pubsub events

Also split the PubSubEvent enum into Event and Payload.
This commit is contained in:
Emmanuel Gil Peyrot 2025-01-27 04:24:02 +01:00
commit fa61f421bb
7 changed files with 156 additions and 252 deletions

View file

@ -15,7 +15,7 @@ use xmpp_parsers::{
ns,
presence::{Presence, Type as PresenceType},
pubsub::{
event::PubSubEvent,
self,
pubsub::{Items, PubSub},
NodeName,
},
@ -126,10 +126,15 @@ async fn main() {
}
for child in message.payloads {
if child.is("event", ns::PUBSUB_EVENT) {
let event = PubSubEvent::try_from(child).unwrap();
if let PubSubEvent::PublishedItems { node, items } = event {
let event = pubsub::Event::try_from(child).unwrap();
if let pubsub::event::Payload::Items {
node,
published,
retracted: _,
} = event.payload
{
if node.0 == ns::AVATAR_METADATA {
for item in items.into_iter() {
for item in published.into_iter() {
let payload = item.payload.clone().unwrap();
if payload.is("metadata", ns::AVATAR_METADATA) {
// TODO: do something with these metadata.