diff --git a/src/attention.rs b/src/attention.rs index 02cc02f3ac3c6d5bb688c5b3c4b567096f47fda4..20f79bae31bbe5b4f8b23daeccf656b61b9651f4 100644 --- a/src/attention.rs +++ b/src/attention.rs @@ -4,9 +4,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use ns; - -generate_empty_element!(Attention, "attention", ns::ATTENTION); +generate_empty_element!(Attention, "attention", ATTENTION); #[cfg(test)] mod tests { diff --git a/src/bind.rs b/src/bind.rs index 3e76dba01dc39d25c4db8e2d2b910deb2ff0f58f..4597636146584e53bc80c551e512eb20ced877f2 100644 --- a/src/bind.rs +++ b/src/bind.rs @@ -33,7 +33,7 @@ impl TryFrom for Bind { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "bind", ns::BIND); + check_self!(elem, "bind", BIND); check_no_attributes!(elem, "bind"); let mut bind = Bind::None; diff --git a/src/blocking.rs b/src/blocking.rs index 997e24111ff536f32396a4befd46ffb2e6dbe850..b24c9e49d82dea86edc29cdc7cd330f584bf2a5b 100644 --- a/src/blocking.rs +++ b/src/blocking.rs @@ -13,7 +13,7 @@ use error::Error; use ns; -generate_empty_element!(BlocklistRequest, "blocklist", ns::BLOCKING); +generate_empty_element!(BlocklistRequest, "blocklist", BLOCKING); macro_rules! generate_blocking_element { ($elem:ident, $name:tt) => ( @@ -26,11 +26,11 @@ macro_rules! generate_blocking_element { type Err = Error; fn try_from(elem: Element) -> Result<$elem, Error> { - check_self!(elem, $name, ns::BLOCKING); + check_self!(elem, $name, BLOCKING); check_no_attributes!(elem, $name); let mut items = vec!(); for child in elem.children() { - check_self!(child, "item", ns::BLOCKING); + check_self!(child, "item", BLOCKING); check_no_unknown_attributes!(child, "item", ["jid"]); check_no_children!(child, "item"); items.push(get_attr!(child, "jid", required)); @@ -59,7 +59,7 @@ generate_blocking_element!(BlocklistResult, "blocklist"); generate_blocking_element!(Block, "block"); generate_blocking_element!(Unblock, "unblock"); -generate_empty_element!(Blocked, "blocked", ns::BLOCKING_ERRORS); +generate_empty_element!(Blocked, "blocked", BLOCKING_ERRORS); #[cfg(test)] mod tests { diff --git a/src/caps.rs b/src/caps.rs index 05f84e1e3a393cab83893b217252a59d8cb4f179..cfafef7e3cbdfc469bcf46f64095062bf3e8f5a4 100644 --- a/src/caps.rs +++ b/src/caps.rs @@ -32,7 +32,7 @@ impl TryFrom for Caps { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "c", ns::CAPS, "caps"); + check_self!(elem, "c", CAPS, "caps"); check_no_children!(elem, "caps"); check_no_unknown_attributes!(elem, "caps", ["hash", "ver", "ext", "node"]); let ver: String = get_attr!(elem, "ver", required); diff --git a/src/chatstates.rs b/src/chatstates.rs index a328e23454b7fe3ef17ecc105752ca463c4085d6..d341975fae318176ae740f3b06b2f301b6d3a527 100644 --- a/src/chatstates.rs +++ b/src/chatstates.rs @@ -6,12 +6,10 @@ #![deny(missing_docs)] -use ns; - generate_element_enum!( /// Enum representing chatstate elements part of the /// `http://jabber.org/protocol/chatstates` namespace. - ChatState, "chatstate", ns::CHATSTATES, { + ChatState, "chatstate", CHATSTATES, { /// `` Active => "active", @@ -35,6 +33,7 @@ mod tests { use try_from::TryFrom; use minidom::Element; use error::Error; + use ns; #[test] fn test_simple() { diff --git a/src/component.rs b/src/component.rs index 7c74ff1a09219109a8107bdfe5c7c22c28fb3e22..6f86dc3cf78aff243f6095aac81f25293705c6c2 100644 --- a/src/component.rs +++ b/src/component.rs @@ -5,12 +5,10 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. use helpers::PlainText; -use ns; - use sha1::Sha1; use digest::Digest; -generate_element_with_text!(Handshake, "handshake", ns::COMPONENT, +generate_element_with_text!(Handshake, "handshake", COMPONENT, data: PlainText> ); diff --git a/src/data_forms.rs b/src/data_forms.rs index 74985edf0421c74184615d7bb248056828477d04..3d8615de8f2fa7e67e119b3d5ecd24ff2b27d1ea 100644 --- a/src/data_forms.rs +++ b/src/data_forms.rs @@ -23,7 +23,7 @@ impl TryFrom for Option_ { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "option", ns::DATA_FORMS); + check_self!(elem, "option", DATA_FORMS); check_no_unknown_attributes!(elem, "option", ["label"]); let mut value = None; for child in elem.children() { @@ -90,7 +90,7 @@ impl TryFrom for Field { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "field", ns::DATA_FORMS); + check_self!(elem, "field", DATA_FORMS); check_no_unknown_attributes!(elem, "field", ["label", "type", "var"]); let mut field = Field { var: get_attr!(elem, "var", required), @@ -167,7 +167,7 @@ impl TryFrom for DataForm { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "x", ns::DATA_FORMS); + check_self!(elem, "x", DATA_FORMS); check_no_unknown_attributes!(elem, "x", ["type"]); let type_ = get_attr!(elem, "type", required); let mut form = DataForm { diff --git a/src/delay.rs b/src/delay.rs index 84d12ad4be6db0c91fdef951ac4c61144a3ca91d..4786365f800df4c4eabc96deb35e812b01d979fc 100644 --- a/src/delay.rs +++ b/src/delay.rs @@ -8,10 +8,9 @@ use date::DateTime; use jid::Jid; -use ns; use helpers::PlainText; -generate_element_with_text!(Delay, "delay", ns::DELAY, +generate_element_with_text!(Delay, "delay", DELAY, [ from: Option = "from" => optional, stamp: DateTime = "stamp" => required diff --git a/src/disco.rs b/src/disco.rs index c48c863c8ce963c6f6bf8d6cb3ebebdd60587b6e..136a50ad27a995f2773e84cddb7ead3c28e7b9d3 100644 --- a/src/disco.rs +++ b/src/disco.rs @@ -21,7 +21,7 @@ generate_element_with_only_attributes!( /// /// It should only be used in an ``, as it can only represent /// the request, and not a result. -DiscoInfoQuery, "query", ns::DISCO_INFO, [ +DiscoInfoQuery, "query", DISCO_INFO, [ /// Node on which we are doing the discovery. node: Option = "node" => optional, ]); @@ -29,7 +29,7 @@ DiscoInfoQuery, "query", ns::DISCO_INFO, [ generate_element_with_only_attributes!( /// Structure representing a `` element. #[derive(PartialEq)] -Feature, "feature", ns::DISCO_INFO, [ +Feature, "feature", DISCO_INFO, [ /// Namespace of the feature we want to represent. var: String = "var" => required, ]); @@ -54,7 +54,7 @@ impl TryFrom for Identity { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "identity", ns::DISCO_INFO, "disco#info identity"); + check_self!(elem, "identity", DISCO_INFO, "disco#info identity"); check_no_children!(elem, "disco#info identity"); check_no_unknown_attributes!(elem, "disco#info identity", ["category", "type", "xml:lang", "name"]); @@ -112,7 +112,7 @@ impl TryFrom for DiscoInfoResult { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "query", ns::DISCO_INFO, "disco#info result"); + check_self!(elem, "query", DISCO_INFO, "disco#info result"); check_no_unknown_attributes!(elem, "disco#info result", ["node"]); let mut result = DiscoInfoResult { @@ -185,14 +185,14 @@ generate_element_with_only_attributes!( /// /// It should only be used in an ``, as it can only represent /// the request, and not a result. -DiscoItemsQuery, "query", ns::DISCO_ITEMS, [ +DiscoItemsQuery, "query", DISCO_ITEMS, [ /// Node on which we are doing the discovery. node: Option = "node" => optional, ]); generate_element_with_only_attributes!( /// Structure representing an `` element. -Item, "item", ns::DISCO_ITEMS, [ +Item, "item", DISCO_ITEMS, [ /// JID of the entity pointed by this item. jid: Jid = "jid" => required, /// Node of the entity pointed by this item. @@ -207,14 +207,14 @@ generate_element_with_children!( /// /// It should only be used in an ``, as it can only /// represent the result, and not a request. - DiscoItemsResult, "query", ns::DISCO_ITEMS, + DiscoItemsResult, "query", DISCO_ITEMS, attributes: [ /// Node on which we have done this discovery. node: Option = "node" => optional ], children: [ /// List of items pointed by this entity. - items: Vec = ("item", ns::DISCO_ITEMS) => Item + items: Vec = ("item", DISCO_ITEMS) => Item ] ); diff --git a/src/ecaps2.rs b/src/ecaps2.rs index 587418b88c0dc7831670247c1ecebebe4dad9abd..8fcd0c9e539eb5bb2a7bcb74400dac9a4eb0f515 100644 --- a/src/ecaps2.rs +++ b/src/ecaps2.rs @@ -29,7 +29,7 @@ impl TryFrom for ECaps2 { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "c", ns::ECAPS2, "ecaps2"); + check_self!(elem, "c", ECAPS2, "ecaps2"); check_no_attributes!(elem, "ecaps2"); let mut hashes = vec!(); for child in elem.children() { diff --git a/src/eme.rs b/src/eme.rs index de48c3b0aff6d67c42b5bab8ffbe8fe49ae92859..ff3737b06d9b57c80c64fda8bf7c297987ddc8fb 100644 --- a/src/eme.rs +++ b/src/eme.rs @@ -4,11 +4,9 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use ns; - generate_element_with_only_attributes!( /// Structure representing an `` element. -ExplicitMessageEncryption, "encryption", ns::EME, [ +ExplicitMessageEncryption, "encryption", EME, [ /// Namespace of the encryption scheme used. namespace: String = "namespace" => required, diff --git a/src/forwarding.rs b/src/forwarding.rs index 8ab4ead2b534699cd1023f96bf4e3d3aa6453cfa..70eead56dc176f238b01af977b70c80b309cb73c 100644 --- a/src/forwarding.rs +++ b/src/forwarding.rs @@ -26,7 +26,7 @@ impl TryFrom for Forwarded { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "forwarded", ns::FORWARD); + check_self!(elem, "forwarded", FORWARD); let mut delay = None; let mut stanza = None; for child in elem.children() { diff --git a/src/hashes.rs b/src/hashes.rs index 472d4c471063e90fc8c2635613ea2b41e3490084..06249ab288b6d592d2d99fd4ef92a6d2db6ee50b 100644 --- a/src/hashes.rs +++ b/src/hashes.rs @@ -10,7 +10,6 @@ use minidom::IntoAttributeValue; use error::Error; -use ns; use helpers::Base64; use base64; @@ -69,7 +68,7 @@ impl IntoAttributeValue for Algo { generate_element_with_text!( #[derive(PartialEq)] - Hash, "hash", ns::HASHES, + Hash, "hash", HASHES, [ algo: Algo = "algo" => required ], diff --git a/src/ibb.rs b/src/ibb.rs index 60653da069e30ea9a09b358ab72454424dba43ed..9c2cdccc5f3ea96394acd860baa825bd45748a84 100644 --- a/src/ibb.rs +++ b/src/ibb.rs @@ -4,7 +4,6 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use ns; use helpers::Base64; generate_attribute!(Stanza, "stanza", { @@ -12,13 +11,13 @@ generate_attribute!(Stanza, "stanza", { Message => "message", }, Default = Iq); -generate_element_with_only_attributes!(Open, "open", ns::IBB, [ +generate_element_with_only_attributes!(Open, "open", IBB, [ block_size: u16 = "block-size" => required, sid: String = "sid" => required, stanza: Stanza = "stanza" => default, ]); -generate_element_with_text!(Data, "data", ns::IBB, +generate_element_with_text!(Data, "data", IBB, [ seq: u16 = "seq" => required, sid: String = "sid" => required @@ -26,7 +25,7 @@ generate_element_with_text!(Data, "data", ns::IBB, data: Base64> ); -generate_element_with_only_attributes!(Close, "close", ns::IBB, [ +generate_element_with_only_attributes!(Close, "close", IBB, [ sid: String = "sid" => required, ]); diff --git a/src/ibr.rs b/src/ibr.rs index 892c67d9d3fad57c659d4ca577d7b01f1a4cceff..99cbcd57ba831381180551ab682691ee3f272d06 100644 --- a/src/ibr.rs +++ b/src/ibr.rs @@ -29,7 +29,7 @@ impl TryFrom for Query { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "query", ns::REGISTER, "IBR query"); + check_self!(elem, "query", REGISTER, "IBR query"); let mut query = Query { registered: false, fields: HashMap::new(), diff --git a/src/idle.rs b/src/idle.rs index a94a5ee63c207170f1339b7fa909c557b7d00a96..1312efb96fd60200f5c16f4e587f468c8179bf1c 100644 --- a/src/idle.rs +++ b/src/idle.rs @@ -6,9 +6,7 @@ use date::DateTime; -use ns; - -generate_element_with_only_attributes!(Idle, "idle", ns::IDLE, [ +generate_element_with_only_attributes!(Idle, "idle", IDLE, [ since: DateTime = "since" => required, ]); diff --git a/src/iq.rs b/src/iq.rs index 9a7f3b5933f3ecad76e2e0a97f6b2ea04bc432fa..8726a9d5756b1af4f21a57b88c7729dbf825a660 100644 --- a/src/iq.rs +++ b/src/iq.rs @@ -207,7 +207,7 @@ impl TryFrom for Iq { type Err = Error; fn try_from(root: Element) -> Result { - check_self!(root, "iq", ns::DEFAULT_NS); + check_self!(root, "iq", DEFAULT_NS); let from = get_attr!(root, "from", optional); let to = get_attr!(root, "to", optional); let id = get_attr!(root, "id", optional); diff --git a/src/jingle.rs b/src/jingle.rs index 1b89dae7ca2d71eb85b3988dd8ae39076668cac5..8bca605474106efd464f3c61d14b016561cb8d77 100644 --- a/src/jingle.rs +++ b/src/jingle.rs @@ -119,7 +119,7 @@ impl TryFrom for Content { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "content", ns::JINGLE); + check_self!(elem, "content", JINGLE); let mut content = Content { creator: get_attr!(elem, "creator", required), @@ -250,7 +250,7 @@ impl TryFrom for ReasonElement { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "reason", ns::JINGLE); + check_self!(elem, "reason", JINGLE); let mut reason = None; let mut text = None; for child in elem.children() { @@ -340,7 +340,7 @@ impl TryFrom for Jingle { type Err = Error; fn try_from(root: Element) -> Result { - check_self!(root, "jingle", ns::JINGLE, "Jingle"); + check_self!(root, "jingle", JINGLE, "Jingle"); let mut jingle = Jingle { action: get_attr!(root, "action", required), diff --git a/src/jingle_ft.rs b/src/jingle_ft.rs index e2539f9907c1424fd07f4e35c4bf935977201a91..eb7e9169e0aeb71bfec2eb301b8da270d0f43fe9 100644 --- a/src/jingle_ft.rs +++ b/src/jingle_ft.rs @@ -20,13 +20,13 @@ use ns; generate_element_with_children!( #[derive(PartialEq, Default)] - Range, "range", ns::JINGLE_FT, + Range, "range", JINGLE_FT, attributes: [ offset: u64 = "offset" => default, length: Option = "length" => optional ], children: [ - hashes: Vec = ("hash", ns::HASHES) => Hash + hashes: Vec = ("hash", HASHES) => Hash ] ); @@ -109,7 +109,7 @@ impl TryFrom for File { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "file", ns::JINGLE_FT); + check_self!(elem, "file", JINGLE_FT); check_no_attributes!(elem, "file"); let mut file = File { @@ -218,7 +218,7 @@ impl TryFrom for Description { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "description", ns::JINGLE_FT, "JingleFT description"); + check_self!(elem, "description", JINGLE_FT, "JingleFT description"); check_no_attributes!(elem, "JingleFT description"); let mut file = None; for child in elem.children() { @@ -256,7 +256,7 @@ impl TryFrom for Checksum { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "checksum", ns::JINGLE_FT); + check_self!(elem, "checksum", JINGLE_FT); check_no_unknown_attributes!(elem, "checksum", ["name", "creator"]); let mut file = None; for child in elem.children() { @@ -287,7 +287,7 @@ impl From for Element { } } -generate_element_with_only_attributes!(Received, "received", ns::JINGLE_FT, [ +generate_element_with_only_attributes!(Received, "received", JINGLE_FT, [ name: ContentId = "name" => required, creator: Creator = "creator" => required, ]); diff --git a/src/jingle_ibb.rs b/src/jingle_ibb.rs index d96e9b910b27ef06644a4cd570022b74f674dc9f..2e68e685b0b84e6ce4102621fa05e393198f95c0 100644 --- a/src/jingle_ibb.rs +++ b/src/jingle_ibb.rs @@ -4,13 +4,11 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use ns; - use ibb::Stanza; generate_id!(StreamId); -generate_element_with_only_attributes!(Transport, "transport", ns::JINGLE_IBB, [ +generate_element_with_only_attributes!(Transport, "transport", JINGLE_IBB, [ block_size: u16 = "block-size" => required, sid: StreamId = "sid" => required, stanza: Stanza = "stanza" => default, diff --git a/src/jingle_s5b.rs b/src/jingle_s5b.rs index 4e8ca817b65a129d0064a59cad6f7ed2d6c31842..79949d73005f67d6dc38cbf9fe15d932755f7da9 100644 --- a/src/jingle_s5b.rs +++ b/src/jingle_s5b.rs @@ -30,7 +30,7 @@ generate_id!(CandidateId); generate_id!(StreamId); -generate_element_with_only_attributes!(Candidate, "candidate", ns::JINGLE_S5B, [ +generate_element_with_only_attributes!(Candidate, "candidate", JINGLE_S5B, [ cid: CandidateId = "cid" => required, host: IpAddr = "host" => required, jid: Jid = "jid" => required, @@ -110,7 +110,7 @@ impl TryFrom for Transport { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "transport", ns::JINGLE_S5B); + check_self!(elem, "transport", JINGLE_S5B); let sid = get_attr!(elem, "sid", required); let dstaddr = get_attr!(elem, "dstaddr", optional); let mode = get_attr!(elem, "mode", default); diff --git a/src/macros.rs b/src/macros.rs index 54297b38d3559149313e2476001942d316ecb68a..26a4b6334d8ededad88284b4d15b1d10e9669584 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -104,10 +104,10 @@ macro_rules! generate_attribute { } macro_rules! generate_element_enum { - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr, {$($(#[$enum_meta:meta])* $enum:ident => $enum_name:tt),+,}) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident, {$($(#[$enum_meta:meta])* $enum:ident => $enum_name:tt),+,}) => ( generate_element_enum!($(#[$meta])* $elem, $name, $ns, {$($(#[$enum_meta])* $enum => $enum_name),+}); ); - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr, {$($(#[$enum_meta:meta])* $enum:ident => $enum_name:tt),+}) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident, {$($(#[$enum_meta:meta])* $enum:ident => $enum_name:tt),+}) => ( $(#[$meta])* #[derive(Debug, Clone, PartialEq)] pub enum $elem { @@ -132,7 +132,7 @@ macro_rules! generate_element_enum { fn from(elem: $elem) -> ::minidom::Element { ::minidom::Element::builder(match elem { $($elem::$enum => $enum_name,)+ - }).ns($ns) + }).ns(::ns::$ns) .build() } } @@ -140,10 +140,10 @@ macro_rules! generate_element_enum { } macro_rules! generate_attribute_enum { - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr, $attr:tt, {$($(#[$enum_meta:meta])* $enum:ident => $enum_name:tt),+,}) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident, $attr:tt, {$($(#[$enum_meta:meta])* $enum:ident => $enum_name:tt),+,}) => ( generate_attribute_enum!($(#[$meta])* $elem, $name, $ns, $attr, {$($(#[$enum_meta])* $enum => $enum_name),+}); ); - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr, $attr:tt, {$($(#[$enum_meta:meta])* $enum:ident => $enum_name:tt),+}) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident, $attr:tt, {$($(#[$enum_meta:meta])* $enum:ident => $enum_name:tt),+}) => ( $(#[$meta])* #[derive(Debug, Clone, PartialEq)] pub enum $elem { @@ -167,7 +167,7 @@ macro_rules! generate_attribute_enum { impl From<$elem> for ::minidom::Element { fn from(elem: $elem) -> ::minidom::Element { ::minidom::Element::builder($name) - .ns($ns) + .ns(::ns::$ns) .attr($attr, match elem { $($elem::$enum => $enum_name,)+ }) @@ -178,19 +178,19 @@ macro_rules! generate_attribute_enum { } macro_rules! check_self { - ($elem:ident, $name:tt, $ns:expr) => ( + ($elem:ident, $name:tt, $ns:ident) => ( check_self!($elem, $name, $ns, $name); ); - ($elem:ident, $name:tt, $ns:expr, $pretty_name:tt) => ( - if !$elem.is($name, $ns) { + ($elem:ident, $name:tt, $ns:ident, $pretty_name:tt) => ( + if !$elem.is($name, ::ns::$ns) { return Err(::error::Error::ParseError(concat!("This is not a ", $pretty_name, " element."))); } ); } macro_rules! check_ns_only { - ($elem:ident, $name:tt, $ns:expr) => ( - if !$elem.has_ns($ns) { + ($elem:ident, $name:tt, $ns:ident) => ( + if !$elem.has_ns(::ns::$ns) { return Err(::error::Error::ParseError(concat!("This is not a ", $name, " element."))); } ); @@ -226,7 +226,7 @@ macro_rules! check_no_unknown_attributes { } macro_rules! generate_empty_element { - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident) => ( $(#[$meta])* #[derive(Debug, Clone)] pub struct $elem; @@ -245,7 +245,7 @@ macro_rules! generate_empty_element { impl From<$elem> for ::minidom::Element { fn from(_: $elem) -> ::minidom::Element { ::minidom::Element::builder($name) - .ns($ns) + .ns(::ns::$ns) .build() } } @@ -253,10 +253,10 @@ macro_rules! generate_empty_element { } macro_rules! generate_element_with_only_attributes { - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr, [$($(#[$attr_meta:meta])* $attr:ident: $attr_type:ty = $attr_name:tt => $attr_action:tt),+,]) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident, [$($(#[$attr_meta:meta])* $attr:ident: $attr_type:ty = $attr_name:tt => $attr_action:tt),+,]) => ( generate_element_with_only_attributes!($(#[$meta])* $elem, $name, $ns, [$($(#[$attr_meta])* $attr: $attr_type = $attr_name => $attr_action),*]); ); - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr, [$($(#[$attr_meta:meta])* $attr:ident: $attr_type:ty = $attr_name:tt => $attr_action:tt),+]) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident, [$($(#[$attr_meta:meta])* $attr:ident: $attr_type:ty = $attr_name:tt => $attr_action:tt),+]) => ( $(#[$meta])* #[derive(Debug, Clone)] pub struct $elem { @@ -284,7 +284,7 @@ macro_rules! generate_element_with_only_attributes { impl From<$elem> for ::minidom::Element { fn from(elem: $elem) -> ::minidom::Element { ::minidom::Element::builder($name) - .ns($ns) + .ns(::ns::$ns) $( .attr($attr_name, elem.$attr) )* @@ -314,7 +314,7 @@ macro_rules! generate_id { } macro_rules! generate_elem_id { - ($elem:ident, $name:tt, $ns:expr) => ( + ($elem:ident, $name:tt, $ns:ident) => ( #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct $elem(pub String); impl ::std::str::FromStr for $elem { @@ -337,7 +337,7 @@ macro_rules! generate_elem_id { impl From<$elem> for ::minidom::Element { fn from(elem: $elem) -> ::minidom::Element { ::minidom::Element::builder($name) - .ns($ns) + .ns(::ns::$ns) .append(elem.0) .build() } @@ -346,10 +346,10 @@ macro_rules! generate_elem_id { } macro_rules! generate_element_with_text { - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr, $text_ident:ident: $codec:ident < $text_type:ty >) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident, $text_ident:ident: $codec:ident < $text_type:ty >) => ( generate_element_with_text!($(#[$meta])* $elem, $name, $ns, [], $text_ident: $codec<$text_type>); ); - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr, [$($(#[$attr_meta:meta])* $attr:ident: $attr_type:ty = $attr_name:tt => $attr_action:tt),*], $text_ident:ident: $codec:ident < $text_type:ty >) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident, [$($(#[$attr_meta:meta])* $attr:ident: $attr_type:ty = $attr_name:tt => $attr_action:tt),*], $text_ident:ident: $codec:ident < $text_type:ty >) => ( $(#[$meta])* #[derive(Debug, Clone)] pub struct $elem { @@ -379,7 +379,7 @@ macro_rules! generate_element_with_text { impl From<$elem> for ::minidom::Element { fn from(elem: $elem) -> ::minidom::Element { ::minidom::Element::builder($name) - .ns($ns) + .ns(::ns::$ns) $( .attr($attr_name, elem.$attr) )* @@ -391,7 +391,7 @@ macro_rules! generate_element_with_text { } macro_rules! generate_element_with_children { - ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:expr, attributes: [$($(#[$attr_meta:meta])* $attr:ident: $attr_type:ty = $attr_name:tt => $attr_action:tt),+], children: [$($(#[$child_meta:meta])* $child_ident:ident: Vec<$child_type:ty> = ($child_name:tt, $child_ns:expr) => $child_constructor:ident),+]) => ( + ($(#[$meta:meta])* $elem:ident, $name:tt, $ns:ident, attributes: [$($(#[$attr_meta:meta])* $attr:ident: $attr_type:ty = $attr_name:tt => $attr_action:tt),+], children: [$($(#[$child_meta:meta])* $child_ident:ident: Vec<$child_type:ty> = ($child_name:tt, $child_ns:ident) => $child_constructor:ident),+]) => ( $(#[$meta])* #[derive(Debug, Clone)] pub struct $elem { @@ -414,7 +414,7 @@ macro_rules! generate_element_with_children { let mut parsed_children = vec!(); for child in elem.children() { $( - if child.is($child_name, $child_ns) { + if child.is($child_name, ::ns::$child_ns) { let parsed_child = $child_constructor::try_from(child.clone())?; parsed_children.push(parsed_child); continue; @@ -436,7 +436,7 @@ macro_rules! generate_element_with_children { impl From<$elem> for ::minidom::Element { fn from(elem: $elem) -> ::minidom::Element { ::minidom::Element::builder($name) - .ns($ns) + .ns(::ns::$ns) $( .attr($attr_name, elem.$attr) )* diff --git a/src/mam.rs b/src/mam.rs index 6af739d9dea90ebaadbdc916e79c51f54d752d02..d9f8892902a386b140bbcd4d2b0cebe5dae1ddd9 100644 --- a/src/mam.rs +++ b/src/mam.rs @@ -55,7 +55,7 @@ impl TryFrom for Query { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "query", ns::MAM); + check_self!(elem, "query", MAM); check_no_unknown_attributes!(elem, "query", ["queryid", "node"]); let mut form = None; let mut set = None; @@ -78,7 +78,7 @@ impl TryFrom for Result_ { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "result", ns::MAM); + check_self!(elem, "result", MAM); check_no_unknown_attributes!(elem, "result", ["queryid", "id"]); let mut forwarded = None; for child in elem.children() { @@ -103,7 +103,7 @@ impl TryFrom for Fin { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "fin", ns::MAM); + check_self!(elem, "fin", MAM); check_no_unknown_attributes!(elem, "fin", ["complete"]); let mut set = None; for child in elem.children() { @@ -128,7 +128,7 @@ impl TryFrom for Prefs { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "prefs", ns::MAM); + check_self!(elem, "prefs", MAM); check_no_unknown_attributes!(elem, "prefs", ["default"]); let mut always = vec!(); let mut never = vec!(); diff --git a/src/media_element.rs b/src/media_element.rs index c9d6a129c1c3494f2c322914eb31eac151d14528..43f0d7acd101e18f254e8c020a43396fe73911df 100644 --- a/src/media_element.rs +++ b/src/media_element.rs @@ -4,23 +4,22 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use ns; use helpers::TrimmedPlainText; -generate_element_with_text!(URI, "uri", ns::MEDIA_ELEMENT, +generate_element_with_text!(URI, "uri", MEDIA_ELEMENT, [ type_: String = "type" => required ], uri: TrimmedPlainText ); -generate_element_with_children!(MediaElement, "media", ns::MEDIA_ELEMENT, +generate_element_with_children!(MediaElement, "media", MEDIA_ELEMENT, attributes: [ width: Option = "width" => optional, height: Option = "height" => optional ], children: [ - uris: Vec = ("uri", ns::MEDIA_ELEMENT) => URI + uris: Vec = ("uri", MEDIA_ELEMENT) => URI ] ); diff --git a/src/message.rs b/src/message.rs index 72fcbde47663c08b3882abb6d2f76d7b7e7b53a6..2fffdb902bd919eb8432a69015b0de6b09151654 100644 --- a/src/message.rs +++ b/src/message.rs @@ -115,9 +115,9 @@ generate_attribute!(MessageType, "type", { type Lang = String; -generate_elem_id!(Body, "body", ns::DEFAULT_NS); -generate_elem_id!(Subject, "subject", ns::DEFAULT_NS); -generate_elem_id!(Thread, "thread", ns::DEFAULT_NS); +generate_elem_id!(Body, "body", DEFAULT_NS); +generate_elem_id!(Subject, "subject", DEFAULT_NS); +generate_elem_id!(Thread, "thread", DEFAULT_NS); /// The main structure representing the `` stanza. #[derive(Debug, Clone)] @@ -188,7 +188,7 @@ impl TryFrom for Message { type Err = Error; fn try_from(root: Element) -> Result { - check_self!(root, "message", ns::DEFAULT_NS); + check_self!(root, "message", DEFAULT_NS); let from = get_attr!(root, "from", optional); let to = get_attr!(root, "to", optional); let id = get_attr!(root, "id", optional); diff --git a/src/message_correct.rs b/src/message_correct.rs index edd9605f79cbc33b77eab37e971ae5940e4aa8bc..3dbb86e49b5838bbfbf732bf376a8f2b0d772122 100644 --- a/src/message_correct.rs +++ b/src/message_correct.rs @@ -4,9 +4,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use ns; - -generate_element_with_only_attributes!(Replace, "replace", ns::MESSAGE_CORRECT, [ +generate_element_with_only_attributes!(Replace, "replace", MESSAGE_CORRECT, [ id: String = "id" => required, ]); diff --git a/src/mood.rs b/src/mood.rs index ed8b19b64b6a62155853f5504dbf7d1861abce30..400a91cdf64ce34bb9c7364936d1c263e8defaa6 100644 --- a/src/mood.rs +++ b/src/mood.rs @@ -6,11 +6,9 @@ #![deny(missing_docs)] -use ns; - generate_element_enum!( /// Enum representing all of the possible values of the XEP-0107 moods. - MoodEnum, "mood", ns::MOOD, { + MoodEnum, "mood", MOOD, { /// Impressed with fear or apprehension; in fear; apprehensive. Afraid => "afraid", diff --git a/src/muc/muc.rs b/src/muc/muc.rs index 14a65302322f41ad0a10fce208893ccc63c269b0..4a6fda401064f946dcba19802e8bd63007f25d24 100644 --- a/src/muc/muc.rs +++ b/src/muc/muc.rs @@ -22,7 +22,7 @@ impl TryFrom for Muc { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "x", ns::MUC); + check_self!(elem, "x", MUC); check_no_attributes!(elem, "x"); let mut password = None; diff --git a/src/muc/user.rs b/src/muc/user.rs index 33b20d87cd05fac2e6bb1c433d867956662e8370..b1390dd69b572855fae9b2cd705e0e1e9ef998a3 100644 --- a/src/muc/user.rs +++ b/src/muc/user.rs @@ -17,7 +17,7 @@ use ns; generate_attribute_enum!( /// Lists all of the possible status codes used in MUC presences. -Status, "status", ns::MUC_USER, "code", { +Status, "status", MUC_USER, "code", { /// Inform user that any occupant is allowed to see the user's full JID NonAnonymousRoom => 100, @@ -92,7 +92,7 @@ impl TryFrom for Actor { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "actor", ns::MUC_USER); + check_self!(elem, "actor", MUC_USER); check_no_unknown_attributes!(elem, "actor", ["jid", "nick"]); for _ in elem.children() { return Err(Error::ParseError("Unknown child in actor element.")); @@ -121,11 +121,11 @@ impl From for Element { } } -generate_element_with_only_attributes!(Continue, "continue", ns::MUC_USER, [ +generate_element_with_only_attributes!(Continue, "continue", MUC_USER, [ thread: Option = "thread" => optional, ]); -generate_elem_id!(Reason, "reason", ns::MUC_USER); +generate_elem_id!(Reason, "reason", MUC_USER); generate_attribute!(Affiliation, "affiliation", { Owner => "owner", @@ -157,7 +157,7 @@ impl TryFrom for Item { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "item", ns::MUC_USER); + check_self!(elem, "item", MUC_USER); check_no_unknown_attributes!(elem, "item", ["affiliation", "jid", "nick", "role"]); let mut actor: Option = None; let mut continue_: Option = None; @@ -216,7 +216,7 @@ impl TryFrom for MucUser { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "x", ns::MUC_USER); + check_self!(elem, "x", MUC_USER); check_no_attributes!(elem, "x"); let mut status = vec!(); let mut items = vec!(); diff --git a/src/ping.rs b/src/ping.rs index 12368c10b59a996714590b5234cb5985e00b68fe..8159ffe9384d2cfe5fb2d1af51b324c6dd935b48 100644 --- a/src/ping.rs +++ b/src/ping.rs @@ -5,9 +5,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use ns; - -generate_empty_element!(Ping, "ping", ns::PING); +generate_empty_element!(Ping, "ping", PING); #[cfg(test)] mod tests { diff --git a/src/presence.rs b/src/presence.rs index f4a4f11fb810a53147ee262031e156b6b5243c52..ecb587546d2432846c6fdd312867f11eaaa5a0f9 100644 --- a/src/presence.rs +++ b/src/presence.rs @@ -248,7 +248,7 @@ impl TryFrom for Presence { type Err = Error; fn try_from(root: Element) -> Result { - check_self!(root, "presence", ns::DEFAULT_NS); + check_self!(root, "presence", DEFAULT_NS); let mut show = None; let mut priority = None; let mut presence = Presence { diff --git a/src/pubsub/event.rs b/src/pubsub/event.rs index 136489562ef3abf4606b0a25db85915d08cfc086..bd7a9351dc518a464c4b4dc161b4477c27a3d0e6 100644 --- a/src/pubsub/event.rs +++ b/src/pubsub/event.rs @@ -32,7 +32,7 @@ impl TryFrom for Item { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "item", ns::PUBSUB_EVENT); + check_self!(elem, "item", PUBSUB_EVENT); check_no_unknown_attributes!(elem, "item", ["id", "node", "publisher"]); let mut payloads = elem.children().cloned().collect::>(); let payload = payloads.pop(); @@ -141,7 +141,7 @@ impl TryFrom for PubSubEvent { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "event", ns::PUBSUB_EVENT); + check_self!(elem, "event", PUBSUB_EVENT); check_no_attributes!(elem, "event"); let mut payload = None; diff --git a/src/receipts.rs b/src/receipts.rs index 564e8fc9e969c1b49f98dd269f597ce17e3bfdca..dfaf54734a12f012208e5e2b95795ddb5b73410e 100644 --- a/src/receipts.rs +++ b/src/receipts.rs @@ -4,11 +4,9 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use ns; +generate_empty_element!(Request, "request", RECEIPTS); -generate_empty_element!(Request, "request", ns::RECEIPTS); - -generate_element_with_only_attributes!(Received, "received", ns::RECEIPTS, [ +generate_element_with_only_attributes!(Received, "received", RECEIPTS, [ id: Option = "id" => optional, ]); @@ -17,6 +15,7 @@ mod tests { use super::*; use try_from::TryFrom; use minidom::Element; + use ns; #[test] fn test_simple() { diff --git a/src/roster.rs b/src/roster.rs index 01011fded1ec93fc60b27a68fe5d2af58451b633..2b62f8088c37c989465214484affb378392ac3b6 100644 --- a/src/roster.rs +++ b/src/roster.rs @@ -6,9 +6,7 @@ use jid::Jid; -use ns; - -generate_elem_id!(Group, "group", ns::ROSTER); +generate_elem_id!(Group, "group", ROSTER); generate_attribute!(Subscription, "subscription", { None => "none", @@ -21,7 +19,7 @@ generate_attribute!(Subscription, "subscription", { generate_element_with_children!( /// Contact from the user’s contact list. #[derive(PartialEq)] - Item, "item", ns::ROSTER, + Item, "item", ROSTER, attributes: [ /// JID of this contact. jid: Jid = "jid" => required, @@ -35,13 +33,13 @@ generate_element_with_children!( children: [ /// Groups this contact is part of. - groups: Vec = ("group", ns::ROSTER) => Group + groups: Vec = ("group", ROSTER) => Group ] ); generate_element_with_children!( /// The contact list of the user. - Roster, "query", ns::ROSTER, + Roster, "query", ROSTER, attributes: [ /// Version of the contact list. /// @@ -52,7 +50,7 @@ generate_element_with_children!( ], children: [ /// List of the contacts of the user. - items: Vec = ("item", ns::ROSTER) => Item + items: Vec = ("item", ROSTER) => Item ] ); diff --git a/src/rsm.rs b/src/rsm.rs index 6b9f54390f4f83fdbb368676b4dcd3534e8124c8..74484e853854295b7a0ee3c600fe19aeae25b5b7 100644 --- a/src/rsm.rs +++ b/src/rsm.rs @@ -28,7 +28,7 @@ impl TryFrom for Set { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "set", ns::RSM, "RSM set"); + check_self!(elem, "set", RSM, "RSM set"); let mut set = Set { after: None, before: None, diff --git a/src/sasl.rs b/src/sasl.rs index 3cb84c78c1ff05734583c1fb966dfb05ce4ad26b..98b4f93bf2a1a818c6503b2f55fbd6fa26046893 100644 --- a/src/sasl.rs +++ b/src/sasl.rs @@ -4,7 +4,6 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -use ns; use helpers::Base64; generate_attribute!(Mechanism, "mechanism", { @@ -13,22 +12,22 @@ generate_attribute!(Mechanism, "mechanism", { Anonymous => "ANONYMOUS", }); -generate_element_with_text!(Auth, "auth", ns::SASL, +generate_element_with_text!(Auth, "auth", SASL, [ mechanism: Mechanism = "mechanism" => required ], data: Base64> ); -generate_element_with_text!(Challenge, "challenge", ns::SASL, +generate_element_with_text!(Challenge, "challenge", SASL, data: Base64> ); -generate_element_with_text!(Response, "response", ns::SASL, +generate_element_with_text!(Response, "response", SASL, data: Base64> ); -generate_element_with_text!(Success, "success", ns::SASL, +generate_element_with_text!(Success, "success", SASL, data: Base64> ); diff --git a/src/stanza_error.rs b/src/stanza_error.rs index 5d26fa2598eb25eba48fb20a93cd3eb0bb349b6f..f2501498f8588d208b0643165d557528ac1742eb 100644 --- a/src/stanza_error.rs +++ b/src/stanza_error.rs @@ -21,7 +21,7 @@ generate_attribute!(ErrorType, "type", { Wait => "wait", }); -generate_element_enum!(DefinedCondition, "condition", ns::XMPP_STANZAS, { +generate_element_enum!(DefinedCondition, "condition", XMPP_STANZAS, { BadRequest => "bad-request", Conflict => "conflict", FeatureNotImplemented => "feature-not-implemented", @@ -61,7 +61,7 @@ impl TryFrom for StanzaError { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "error", ns::DEFAULT_NS); + check_self!(elem, "error", DEFAULT_NS); let type_ = get_attr!(elem, "type", required); let by = get_attr!(elem, "by", optional); diff --git a/src/stanza_id.rs b/src/stanza_id.rs index bad880029dfc6dcf65e11bcfa37d0d6f95708626..b321b46c8c19c4523131d65b37f4222a2113952f 100644 --- a/src/stanza_id.rs +++ b/src/stanza_id.rs @@ -6,14 +6,12 @@ use jid::Jid; -use ns; - -generate_element_with_only_attributes!(StanzaId, "stanza-id", ns::SID, [ +generate_element_with_only_attributes!(StanzaId, "stanza-id", SID, [ id: String = "id" => required, by: Jid = "by" => required, ]); -generate_element_with_only_attributes!(OriginId, "origin-id", ns::SID, [ +generate_element_with_only_attributes!(OriginId, "origin-id", SID, [ id: String = "id" => required, ]); diff --git a/src/stream.rs b/src/stream.rs index 9d9eff4625340cc86bcaf7614bc0f67cf7c07297..93a71c41d9a96249e93a19967bd16168f37f330b 100644 --- a/src/stream.rs +++ b/src/stream.rs @@ -5,9 +5,8 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. use jid::Jid; -use ns; -generate_element_with_only_attributes!(Stream, "stream", ns::STREAM, [ +generate_element_with_only_attributes!(Stream, "stream", STREAM, [ from: Option = "from" => optional, to: Option = "to" => optional, id: Option = "id" => optional, diff --git a/src/version.rs b/src/version.rs index 9521dc990b19267f17eac60b715c4121dd5ce403..e01a40d308b8711690935153838e36763062d395 100644 --- a/src/version.rs +++ b/src/version.rs @@ -20,7 +20,7 @@ impl TryFrom for Version { type Err = Error; fn try_from(elem: Element) -> Result { - check_self!(elem, "query", ns::VERSION, "version"); + check_self!(elem, "query", VERSION, "version"); check_no_attributes!(elem, "version"); let mut name = None; let mut version = None; diff --git a/src/websocket.rs b/src/websocket.rs index 2402164807977d6100355576c8d680b23036e1e7..b5aa7903457af5d89ff46813471bd8ff1aa0a20a 100644 --- a/src/websocket.rs +++ b/src/websocket.rs @@ -5,9 +5,8 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. use jid::Jid; -use ns; -generate_element_with_only_attributes!(Open, "open", ns::WEBSOCKET, [ +generate_element_with_only_attributes!(Open, "open", WEBSOCKET, [ from: Option = "from" => optional, to: Option = "to" => optional, id: Option = "id" => optional,