diff options
author | 2025-04-01 08:27:33 +0100 | |
---|---|---|
committer | 2025-04-01 08:27:33 +0100 | |
commit | 132d932e6264774ad7d6eab9f52719848c5c91bb (patch) | |
tree | 35eb26a46e3da3e7a6451d6fe49f413c00458199 /stanza/src/stanza_error.rs | |
parent | b18c1cc2568dc116de5944d9829303ef8cc61b00 (diff) | |
download | luz-132d932e6264774ad7d6eab9f52719848c5c91bb.tar.gz luz-132d932e6264774ad7d6eab9f52719848c5c91bb.tar.bz2 luz-132d932e6264774ad7d6eab9f52719848c5c91bb.zip |
feat(stanza): xep-0060: pubsub
Diffstat (limited to 'stanza/src/stanza_error.rs')
-rw-r--r-- | stanza/src/stanza_error.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/stanza/src/stanza_error.rs b/stanza/src/stanza_error.rs index a4b58bc..664a168 100644 --- a/stanza/src/stanza_error.rs +++ b/stanza/src/stanza_error.rs @@ -6,6 +6,9 @@ use peanuts::{ }; use thiserror::Error; +#[cfg(feature = "xep_0060")] +use crate::xep_0060::{self, errors::Error as PubsubError}; + pub const XMLNS: &str = "urn:ietf:params:xml:ns:xmpp-stanzas"; #[derive(Error, Clone, Debug)] @@ -54,6 +57,10 @@ pub enum Error { UndefinedCondition, #[error("unexpected request")] UnexpectedRequest, + #[cfg(feature = "xep_0060")] + #[error("pubsub: {0}")] + PubSub(#[from] PubsubError), + // TODO: unrecognized error } impl FromElement for Error { @@ -82,9 +89,13 @@ impl FromElement for Error { (Some(XMLNS), "subscription-required") => error = Error::SubscriptionRequired, (Some(XMLNS), "undefined-condition") => error = Error::UndefinedCondition, (Some(XMLNS), "unexpected-request") => error = Error::UnexpectedRequest, + #[cfg(feature = "xep_0060")] + (Some(xep_0060::errors::XMLNS), _) => { + error = Error::PubSub(PubsubError::from_element(element)?) + } _ => return Err(peanuts::DeserializeError::UnexpectedElement(element)), } - element.no_more_content()?; + // element.no_more_content()?; return Ok(error); } } @@ -118,6 +129,8 @@ impl IntoElement for Error { Error::SubscriptionRequired => Element::builder("subscription-required", Some(XMLNS)), Error::UndefinedCondition => Element::builder("undefined-condition", Some(XMLNS)), Error::UnexpectedRequest => Element::builder("unexpected-request", Some(XMLNS)), + #[cfg(feature = "xep_0060")] + Error::PubSub(pubsub) => pubsub.builder(), } } } |