xmpp-parsers: Stop reexporting extra symbols

Let’s continue reexporting jid and minidom, but not their inner pub
items, users of this crate can go one level deeper if they need that.

Only xso::error::Error is still useful to reexport, as this is part of
the public API of all of our parsers.
This commit is contained in:
Emmanuel Gil Peyrot 2024-07-24 20:28:22 +02:00 committed by Jonas Schäfer
commit 7b66de1166
79 changed files with 123 additions and 118 deletions

View file

@ -11,7 +11,8 @@ use xmpp_parsers::{
disco::DiscoInfoResult,
ecaps2::{compute_disco as compute_disco_ecaps2, hash_ecaps2, ECaps2},
hashes::Algo,
Element, Error,
minidom::Element,
Error,
};
fn get_caps(disco: &DiscoInfoResult, node: String) -> Result<Caps, String> {

View file

@ -18,7 +18,7 @@ impl MessagePayload for Attention {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(not(feature = "disable-validation"))]
use xso::error::{Error, FromElementError};

View file

@ -66,7 +66,7 @@ impl PubSubPayload for Data {}
mod tests {
use super::*;
use crate::hashes::Algo;
use crate::Element;
use minidom::Element;
#[cfg(not(feature = "disable-validation"))]
use xso::error::{Error, FromElementError};

View file

@ -6,8 +6,8 @@
use crate::iq::{IqResultPayload, IqSetPayload};
use crate::ns;
use crate::Element;
use jid::{FullJid, Jid};
use minidom::Element;
use std::str::FromStr;
use xso::error::{Error, FromElementError};

View file

@ -6,7 +6,7 @@
use crate::mam;
use crate::ns;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
/// Represents the `<bind/>` element, as sent by the server in SASL2 to advertise which features
@ -180,7 +180,6 @@ impl From<Bound> for Element {
#[cfg(test)]
mod tests {
use super::*;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -8,8 +8,8 @@ use xso::{AsXml, FromXml};
use crate::iq::{IqGetPayload, IqResultPayload, IqSetPayload};
use crate::ns;
use crate::Element;
use jid::Jid;
use minidom::Element;
use xso::error::FromElementError;
/// The element requesting the blocklist, the result iq will contain a

View file

@ -114,7 +114,7 @@ pub struct Data {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::FromElementError;
#[cfg(target_pointer_width = "32")]

View file

@ -98,7 +98,7 @@ impl Storage {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -15,7 +15,7 @@
//! This module exposes the [`Autojoin`][crate::bookmarks2::Autojoin] boolean flag, the [`Conference`][crate::bookmarks2::Conference] chatroom element, and the [BOOKMARKS2][crate::ns::BOOKMARKS2] XML namespace.
use crate::ns;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
generate_attribute!(

View file

@ -9,10 +9,10 @@ use crate::disco::{DiscoInfoQuery, DiscoInfoResult, Feature, Identity};
use crate::hashes::{Algo, Hash};
use crate::ns;
use crate::presence::PresencePayload;
use crate::Element;
use base64::{engine::general_purpose::STANDARD as Base64, Engine};
use blake2::Blake2bVar;
use digest::{Digest, Update, VariableOutput};
use minidom::Element;
use sha1::Sha1;
use sha2::{Sha256, Sha512};
use sha3::{Sha3_256, Sha3_512};

View file

@ -60,7 +60,7 @@ impl MessagePayload for Sent {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -120,7 +120,7 @@ impl IqSetPayload for Revoke {}
mod tests {
use super::*;
use crate::ns;
use crate::Element;
use minidom::Element;
use std::str::FromStr;
#[cfg(target_pointer_width = "32")]

View file

@ -33,7 +33,7 @@ impl MessagePayload for ChatState {}
mod tests {
use super::*;
use crate::ns;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[test]

View file

@ -43,7 +43,7 @@ impl Handshake {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -27,7 +27,7 @@ pub struct Active;
mod tests {
use super::*;
use crate::ns;
use crate::Element;
use minidom::Element;
#[test]
fn test_size() {

View file

@ -7,7 +7,7 @@
use crate::data_forms_validate::Validate;
use crate::media_element::MediaElement;
use crate::ns;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
generate_element!(

View file

@ -8,10 +8,12 @@ use std::fmt::{Display, Formatter};
use std::str::FromStr;
use minidom::{Element, IntoAttributeValue};
use xso::{error::FromElementError, AsXml, FromXml};
use xso::{
error::{Error, FromElementError},
AsXml, FromXml,
};
use crate::ns::{self, XDATA_VALIDATE};
use crate::Error;
/// Validation Method
#[derive(Debug, Clone, PartialEq)]

View file

@ -35,8 +35,8 @@ impl PresencePayload for Delay {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use jid::BareJid;
use minidom::Element;
use std::str::FromStr;
use xso::error::{Error, FromElementError};

View file

@ -13,8 +13,8 @@ use crate::data_forms::{DataForm, DataFormType};
use crate::iq::{IqGetPayload, IqResultPayload};
use crate::ns;
use crate::rsm::{SetQuery, SetResult};
use crate::Element;
use jid::Jid;
use minidom::Element;
/// Structure representing a `<query xmlns='http://jabber.org/protocol/disco#info'/>` element.
///

View file

@ -186,7 +186,7 @@ pub fn query_ecaps2(hash: Hash) -> DiscoInfoQuery {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::FromElementError;
#[cfg(target_pointer_width = "32")]

View file

@ -28,7 +28,7 @@ impl MessagePayload for ExplicitMessageEncryption {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -143,7 +143,7 @@ impl IqResultPayload for Credentials {}
mod tests {
use super::*;
use crate::ns;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -77,7 +77,7 @@ pub struct Token {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use std::str::FromStr;
#[test]

View file

@ -26,7 +26,7 @@ generate_element!(
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -244,7 +244,7 @@ impl Deref for Sha1HexAttribute {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::FromElementError;
#[cfg(target_pointer_width = "32")]

View file

@ -11,7 +11,7 @@ use xso::{
use crate::iq::{IqGetPayload, IqResultPayload};
use crate::ns;
use crate::Element;
use minidom::Element;
/// Requesting a slot
#[derive(FromXml, AsXml, Debug, Clone, PartialEq)]

View file

@ -76,7 +76,7 @@ impl IqSetPayload for Close {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -7,7 +7,7 @@
use crate::data_forms::DataForm;
use crate::iq::{IqGetPayload, IqResultPayload, IqSetPayload};
use crate::ns;
use crate::Element;
use minidom::Element;
use std::collections::HashMap;
use xso::error::{Error, FromElementError};

View file

@ -24,7 +24,7 @@ impl PresencePayload for Idle {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use std::str::FromStr;
use xso::error::{Error, FromElementError};

View file

@ -7,8 +7,8 @@
use crate::ns;
use crate::stanza_error::StanzaError;
use crate::Element;
use jid::Jid;
use minidom::Element;
use minidom::IntoAttributeValue;
use xso::error::{Error, FromElementError};

View file

@ -43,8 +43,8 @@ impl IqResultPayload for JidPrepResponse {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use jid::FullJid;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -11,8 +11,8 @@ use crate::jingle_ice_udp::Transport as IceUdpTransport;
use crate::jingle_rtp::Description as RtpDescription;
use crate::jingle_s5b::Transport as Socks5Transport;
use crate::ns;
use crate::Element;
use jid::Jid;
use minidom::Element;
use std::collections::BTreeMap;
use std::fmt;
use std::str::FromStr;

View file

@ -72,7 +72,7 @@ impl Fingerprint {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -54,7 +54,7 @@ generate_element!(
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -24,7 +24,7 @@ attributes: [
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -128,7 +128,7 @@ mod tests {
use super::*;
use crate::hashes::Algo;
use crate::jingle_dtls_srtp::Setup;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -6,7 +6,7 @@
use crate::jingle::SessionId;
use crate::ns;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
/// Defines a protocol for broadcasting Jingle requests to all of the clients

View file

@ -68,7 +68,7 @@ pub struct Candidate {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -24,7 +24,7 @@ pub struct RtcpFb {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -154,7 +154,7 @@ pub struct Parameter {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -55,7 +55,7 @@ impl RtpHdrext {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -5,8 +5,8 @@
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
use crate::ns;
use crate::Element;
use jid::Jid;
use minidom::Element;
use std::net::IpAddr;
use xso::error::{Error, FromElementError};

View file

@ -83,7 +83,7 @@ generate_element!(
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -184,7 +184,7 @@ impl MessagePayload for Encrypted {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[test]
fn parse_bundle() {

View file

@ -23,16 +23,18 @@
#![warn(missing_docs)]
pub use xso::error::{Error, FromElementError};
// TODO: only export top-level module on the next major release
pub use jid::{self, BareJid, Error as JidParseError, FullJid, Jid};
pub use minidom::Element;
pub use blake2;
pub use jid;
pub use minidom;
pub use sha1;
pub use sha2;
pub use sha3;
// We normally only reexport entire crates, but xso is a special case since it uses proc macros
// which require it to be directly imported as a crate. The only useful symbol we have to reexport
// is its error type, which we expose in all of our return types.
pub use xso::error::Error;
/// XML namespace definitions used through XMPP.
pub mod ns;

View file

@ -17,7 +17,7 @@ use crate::message::MessagePayload;
use crate::ns;
use crate::pubsub::NodeName;
use crate::rsm::{SetQuery, SetResult};
use crate::Element;
use minidom::Element;
use minidom::Node;
generate_id!(

View file

@ -46,7 +46,7 @@ generate_element!(
mod tests {
use super::*;
use crate::data_forms::DataForm;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -5,8 +5,8 @@
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
use crate::ns;
use crate::Element;
use jid::Jid;
use minidom::Element;
use std::collections::BTreeMap;
use xso::error::{Error, FromElementError};

View file

@ -24,7 +24,7 @@ impl MessagePayload for Replace {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -254,7 +254,7 @@ impl Destroy {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[test]
fn participant() {

View file

@ -271,7 +271,7 @@ generate_elem_id!(
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -99,7 +99,7 @@ impl Muc {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use std::str::FromStr;
use xso::error::{Error, FromElementError};

View file

@ -13,7 +13,7 @@ use xso::{
use crate::message::MessagePayload;
use crate::ns;
use crate::presence::PresencePayload;
use crate::Element;
use minidom::Element;
use jid::FullJid;
@ -310,7 +310,7 @@ mod tests {
use super::*;
use crate::message::Message;
use crate::presence::{Presence, Type as PresenceType};
use crate::Jid;
use jid::Jid;
#[test]
fn test_simple() {

View file

@ -14,7 +14,7 @@ generate_elem_id!(
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(not(feature = "disable-validation"))]
use xso::error::{Error, FromElementError};

View file

@ -28,7 +28,7 @@ impl PresencePayload for OccupantId {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -23,7 +23,7 @@ impl MessagePayload for Oob {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -67,7 +67,7 @@ mod tests {
pubsub::{Item as PubSubItem, Publish},
Item, NodeName,
};
use crate::Element;
use minidom::Element;
use std::str::FromStr;
#[test]

View file

@ -21,7 +21,7 @@ impl IqGetPayload for Ping {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(not(feature = "disable-validation"))]
use xso::error::{Error, FromElementError};

View file

@ -9,8 +9,8 @@ use crate::date::DateTime;
use crate::message::MessagePayload;
use crate::ns;
use crate::pubsub::{Item as PubSubItem, ItemId, NodeName, Subscription, SubscriptionId};
use crate::Element;
use jid::Jid;
use minidom::Element;
use xso::error::{Error, FromElementError};
/// Event wrapper for a PubSub `<item/>`.

View file

@ -18,7 +18,8 @@ pub use self::event::PubSubEvent;
pub use self::owner::PubSubOwner;
pub use self::pubsub::PubSub;
use crate::{Element, Jid};
use jid::Jid;
use minidom::Element;
generate_id!(
/// The name of a PubSub node, used to identify it on a JID.
@ -105,4 +106,4 @@ impl Item {
}
/// This trait should be implemented on any element which can be included as a PubSub payload.
pub trait PubSubPayload: ::std::convert::TryFrom<crate::Element> + Into<crate::Element> {}
pub trait PubSubPayload: TryFrom<Element> + Into<Element> {}

View file

@ -11,8 +11,8 @@ use crate::data_forms::DataForm;
use crate::iq::{IqGetPayload, IqResultPayload, IqSetPayload};
use crate::ns;
use crate::pubsub::{AffiliationAttribute, NodeName, Subscription};
use crate::Element;
use jid::Jid;
use minidom::Element;
use xso::error::{Error, FromElementError};
generate_element!(

View file

@ -15,8 +15,8 @@ use crate::ns;
use crate::pubsub::{
AffiliationAttribute, Item as PubSubItem, NodeName, Subscription, SubscriptionId,
};
use crate::Element;
use jid::Jid;
use minidom::Element;
// TODO: a better solution would be to split this into a query and a result elements, like for
// XEP-0030.

View file

@ -36,7 +36,7 @@ pub struct Reaction {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -33,7 +33,7 @@ impl MessagePayload for Received {}
mod tests {
use super::*;
use crate::ns;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -91,7 +91,7 @@ impl IqResultPayload for Roster {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use std::str::FromStr;
use xso::error::{Error, FromElementError};

View file

@ -5,7 +5,7 @@
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
use crate::ns;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
/// Requests paging through a potentially big set of items (represented by an

View file

@ -7,7 +7,7 @@
use xso::{text::EmptyAsNone, AsXml, FromXml};
use crate::ns;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
generate_attribute!(

View file

@ -11,7 +11,7 @@ use xso::{
};
use crate::ns;
use crate::Element;
use minidom::Element;
use std::collections::BTreeMap;
generate_attribute!(

View file

@ -146,7 +146,7 @@ pub struct StreamManagement;
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -7,8 +7,8 @@
use crate::message::MessagePayload;
use crate::ns;
use crate::presence::PresencePayload;
use crate::Element;
use jid::Jid;
use minidom::Element;
use minidom::Node;
use std::collections::BTreeMap;
use std::convert::TryFrom;

View file

@ -41,8 +41,8 @@ impl MessagePayload for OriginId {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use jid::BareJid;
use minidom::Element;
use xso::error::{Error, FromElementError};
#[cfg(target_pointer_width = "32")]

View file

@ -81,7 +81,7 @@ impl Stream {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -9,8 +9,8 @@ use xso::{AsXml, FromXml};
use crate::date::DateTime;
use crate::iq::{IqGetPayload, IqResultPayload};
use crate::ns;
use crate::Element;
use chrono::FixedOffset;
use minidom::Element;
use std::str::FromStr;
use xso::error::{Error, FromElementError};

View file

@ -6,7 +6,7 @@
use crate::ns;
use crate::pubsub::PubSubPayload;
use crate::Element;
use minidom::Element;
use xso::error::{Error, FromElementError};
generate_elem_id!(

View file

@ -288,9 +288,9 @@ macro_rules! generate_element_enum {
$enum
),+
}
impl ::std::convert::TryFrom<crate::Element> for $elem {
impl ::std::convert::TryFrom<minidom::Element> for $elem {
type Error = xso::error::FromElementError;
fn try_from(elem: crate::Element) -> Result<$elem, xso::error::FromElementError> {
fn try_from(elem: minidom::Element) -> Result<$elem, xso::error::FromElementError> {
check_ns_only!(elem, $name, $ns);
check_no_children!(elem, $name);
check_no_attributes!(elem, $name);
@ -300,9 +300,9 @@ macro_rules! generate_element_enum {
})
}
}
impl From<$elem> for crate::Element {
fn from(elem: $elem) -> crate::Element {
crate::Element::builder(
impl From<$elem> for minidom::Element {
fn from(elem: $elem) -> minidom::Element {
minidom::Element::builder(
match elem {
$($elem::$enum => $enum_name,)+
},
@ -324,9 +324,9 @@ macro_rules! generate_attribute_enum {
$enum
),+
}
impl ::std::convert::TryFrom<crate::Element> for $elem {
impl ::std::convert::TryFrom<minidom::Element> for $elem {
type Error = xso::error::FromElementError;
fn try_from(elem: crate::Element) -> Result<$elem, xso::error::FromElementError> {
fn try_from(elem: minidom::Element) -> Result<$elem, xso::error::FromElementError> {
check_ns_only!(elem, $name, $ns);
check_no_children!(elem, $name);
check_no_unknown_attributes!(elem, $name, [$attr]);
@ -336,9 +336,9 @@ macro_rules! generate_attribute_enum {
})
}
}
impl From<$elem> for crate::Element {
fn from(elem: $elem) -> crate::Element {
crate::Element::builder($name, crate::ns::$ns)
impl From<$elem> for minidom::Element {
fn from(elem: $elem) -> minidom::Element {
minidom::Element::builder($name, crate::ns::$ns)
.attr($attr, match elem {
$($elem::$enum => $enum_name,)+
})
@ -467,9 +467,9 @@ macro_rules! generate_elem_id {
$(#[$meta])*
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct $elem(pub $type);
impl ::std::convert::TryFrom<crate::Element> for $elem {
impl ::std::convert::TryFrom<minidom::Element> for $elem {
type Error = xso::error::FromElementError;
fn try_from(elem: crate::Element) -> Result<$elem, xso::error::FromElementError> {
fn try_from(elem: minidom::Element) -> Result<$elem, xso::error::FromElementError> {
check_self!(elem, $name, $ns);
check_no_children!(elem, $name);
check_no_attributes!(elem, $name);
@ -477,9 +477,9 @@ macro_rules! generate_elem_id {
Ok($elem(elem.text().parse().map_err(xso::error::Error::text_parse_error)?))
}
}
impl From<$elem> for crate::Element {
fn from(elem: $elem) -> crate::Element {
crate::Element::builder($name, crate::ns::$ns)
impl From<$elem> for minidom::Element {
fn from(elem: $elem) -> minidom::Element {
minidom::Element::builder($name, crate::ns::$ns)
.append(elem.0.to_string())
.build()
}
@ -637,27 +637,27 @@ macro_rules! finish_parse_elem {
macro_rules! generate_serialiser {
($builder:ident, $parent:ident, $elem:ident, Required, String, ($name:tt, $ns:ident)) => {
$builder.append(
crate::Element::builder($name, crate::ns::$ns)
minidom::Element::builder($name, crate::ns::$ns)
.append(::minidom::Node::Text($parent.$elem)),
)
};
($builder:ident, $parent:ident, $elem:ident, Option, String, ($name:tt, $ns:ident)) => {
$builder.append_all($parent.$elem.map(|elem| {
crate::Element::builder($name, crate::ns::$ns).append(::minidom::Node::Text(elem))
minidom::Element::builder($name, crate::ns::$ns).append(::minidom::Node::Text(elem))
}))
};
($builder:ident, $parent:ident, $elem:ident, Option, $constructor:ident, ($name:tt, *)) => {
$builder.append_all(
$parent
.$elem
.map(|elem| ::minidom::Node::Element(crate::Element::from(elem))),
.map(|elem| ::minidom::Node::Element(minidom::Element::from(elem))),
)
};
($builder:ident, $parent:ident, $elem:ident, Option, $constructor:ident, ($name:tt, $ns:ident)) => {
$builder.append_all(
$parent
.$elem
.map(|elem| ::minidom::Node::Element(crate::Element::from(elem))),
.map(|elem| ::minidom::Node::Element(minidom::Element::from(elem))),
)
};
($builder:ident, $parent:ident, $elem:ident, Vec, $constructor:ident, ($name:tt, $ns:ident)) => {
@ -667,11 +667,11 @@ macro_rules! generate_serialiser {
$builder.append_all(
$parent
.$elem
.then(|| crate::Element::builder($name, crate::ns::$ns)),
.then(|| minidom::Element::builder($name, crate::ns::$ns)),
)
};
($builder:ident, $parent:ident, $elem:ident, $_:ident, $constructor:ident, ($name:tt, $ns:ident)) => {
$builder.append(::minidom::Node::Element(crate::Element::from(
$builder.append(::minidom::Node::Element(minidom::Element::from(
$parent.$elem,
)))
};
@ -734,10 +734,10 @@ macro_rules! generate_element {
}
}
impl ::std::convert::TryFrom<crate::Element> for $elem {
impl ::std::convert::TryFrom<minidom::Element> for $elem {
type Error = xso::error::FromElementError;
fn try_from(mut elem: crate::Element) -> Result<$elem, xso::error::FromElementError> {
fn try_from(mut elem: minidom::Element) -> Result<$elem, xso::error::FromElementError> {
check_self!(elem, $name, $ns);
check_no_unknown_attributes!(elem, $name, [$($attr_name),*]);
$(
@ -790,9 +790,9 @@ macro_rules! generate_element {
}
}
impl From<$elem> for crate::Element {
fn from(elem: $elem) -> crate::Element {
let mut builder = crate::Element::builder($name, crate::ns::$ns);
impl From<$elem> for minidom::Element {
fn from(elem: $elem) -> minidom::Element {
let mut builder = minidom::Element::builder($name, crate::ns::$ns);
$(
builder = builder.attr($attr_name, elem.$attr);
)*
@ -827,10 +827,10 @@ macro_rules! assert_size (
// TODO: move that to src/pubsub/mod.rs, once we figure out how to use macros from there.
macro_rules! impl_pubsub_item {
($item:ident, $ns:ident) => {
impl ::std::convert::TryFrom<crate::Element> for $item {
impl ::std::convert::TryFrom<minidom::Element> for $item {
type Error = FromElementError;
fn try_from(mut elem: crate::Element) -> Result<$item, FromElementError> {
fn try_from(mut elem: minidom::Element) -> Result<$item, FromElementError> {
check_self!(elem, "item", $ns);
check_no_unknown_attributes!(elem, "item", ["id", "publisher"]);
let mut payloads = elem.take_contents_as_children().collect::<Vec<_>>();
@ -846,9 +846,9 @@ macro_rules! impl_pubsub_item {
}
}
impl From<$item> for crate::Element {
fn from(item: $item) -> crate::Element {
crate::Element::builder("item", ns::$ns)
impl From<$item> for minidom::Element {
fn from(item: $item) -> minidom::Element {
minidom::Element::builder("item", ns::$ns)
.attr("id", item.0.id)
.attr("publisher", item.0.publisher)
.append_all(item.0.payload)

View file

@ -13,11 +13,11 @@
//! For vCard updates defined in [XEP-0153](https://xmpp.org/extensions/xep-0153.html),
//! see [`vcard_update`][crate::vcard_update] module.
use xso::{AsXml, FromXml};
use xso::{error::Error, AsXml, FromXml};
use crate::iq::{IqGetPayload, IqResultPayload, IqSetPayload};
use crate::ns;
use crate::util::text_node_codecs::{Codec, WhitespaceAwareBase64};
use crate::{ns, Error};
use minidom::Element;
generate_element!(

View file

@ -35,7 +35,7 @@ generate_element!(
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
use std::str::FromStr;
#[test]

View file

@ -42,7 +42,7 @@ impl IqResultPayload for VersionResult {}
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]

View file

@ -80,7 +80,7 @@ impl Open {
#[cfg(test)]
mod tests {
use super::*;
use crate::Element;
use minidom::Element;
#[cfg(target_pointer_width = "32")]
#[test]