Update jid dependency to 0.6.0: Jid split change
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
parent
80bb6635a9
commit
1e3f940db9
9 changed files with 38 additions and 39 deletions
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
minidom = "0.10.0"
|
minidom = "0.10.0"
|
||||||
jid = { version = "0.5.3", features = ["minidom"] }
|
jid = { version = "0.6.0", features = ["minidom"] }
|
||||||
base64 = "0.10"
|
base64 = "0.10"
|
||||||
digest = "0.8"
|
digest = "0.8"
|
||||||
sha-1 = "0.8"
|
sha-1 = "0.8"
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
use crate::util::error::Error;
|
use crate::util::error::Error;
|
||||||
use crate::iq::{IqResultPayload, IqSetPayload};
|
use crate::iq::{IqResultPayload, IqSetPayload};
|
||||||
use crate::ns;
|
use crate::ns;
|
||||||
use jid::Jid;
|
use jid::FullJid;
|
||||||
use minidom::Element;
|
use minidom::Element;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
|
|
@ -26,7 +26,7 @@ pub enum Bind {
|
||||||
Resource(String),
|
Resource(String),
|
||||||
|
|
||||||
/// The full JID returned by the server for this client.
|
/// The full JID returned by the server for this client.
|
||||||
Jid(Jid),
|
Jid(FullJid),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Bind {
|
impl Bind {
|
||||||
|
|
@ -61,7 +61,7 @@ impl TryFrom<Element> for Bind {
|
||||||
} else if child.is("jid", ns::BIND) {
|
} else if child.is("jid", ns::BIND) {
|
||||||
check_no_attributes!(child, "jid");
|
check_no_attributes!(child, "jid");
|
||||||
check_no_children!(child, "jid");
|
check_no_children!(child, "jid");
|
||||||
bind = Bind::Jid(Jid::from_str(&child.text())?);
|
bind = Bind::Jid(FullJid::from_str(&child.text())?);
|
||||||
} else {
|
} else {
|
||||||
return Err(Error::ParseError("Unknown element in bind."));
|
return Err(Error::ParseError("Unknown element in bind."));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,7 @@ generate_empty_element!(
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use jid::BareJid;
|
||||||
|
|
||||||
#[cfg(target_pointer_width = "32")]
|
#[cfg(target_pointer_width = "32")]
|
||||||
#[test]
|
#[test]
|
||||||
|
|
@ -143,16 +144,14 @@ mod tests {
|
||||||
fn test_items() {
|
fn test_items() {
|
||||||
let elem: Element = "<blocklist xmlns='urn:xmpp:blocking'><item jid='coucou@coucou'/><item jid='domain'/></blocklist>".parse().unwrap();
|
let elem: Element = "<blocklist xmlns='urn:xmpp:blocking'><item jid='coucou@coucou'/><item jid='domain'/></blocklist>".parse().unwrap();
|
||||||
let two_items = vec![
|
let two_items = vec![
|
||||||
Jid {
|
Jid::Bare(BareJid {
|
||||||
node: Some(String::from("coucou")),
|
node: Some(String::from("coucou")),
|
||||||
domain: String::from("coucou"),
|
domain: String::from("coucou"),
|
||||||
resource: None,
|
}),
|
||||||
},
|
Jid::Bare(BareJid {
|
||||||
Jid {
|
|
||||||
node: None,
|
node: None,
|
||||||
domain: String::from("domain"),
|
domain: String::from("domain"),
|
||||||
resource: None,
|
}),
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
let result_elem = elem.clone();
|
let result_elem = elem.clone();
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
// 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/.
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
use jid::Jid;
|
use jid::BareJid;
|
||||||
|
|
||||||
generate_attribute!(
|
generate_attribute!(
|
||||||
/// Whether a conference bookmark should be joined automatically.
|
/// Whether a conference bookmark should be joined automatically.
|
||||||
|
|
@ -21,7 +21,7 @@ generate_element!(
|
||||||
autojoin: Default<Autojoin> = "autojoin",
|
autojoin: Default<Autojoin> = "autojoin",
|
||||||
|
|
||||||
/// The JID of the conference.
|
/// The JID of the conference.
|
||||||
jid: Required<Jid> = "jid",
|
jid: Required<BareJid> = "jid",
|
||||||
|
|
||||||
/// A user-defined name for this conference.
|
/// A user-defined name for this conference.
|
||||||
name: Required<String> = "name",
|
name: Required<String> = "name",
|
||||||
|
|
@ -113,7 +113,7 @@ mod tests {
|
||||||
assert_eq!(storage.conferences[0].autojoin, Autojoin::True);
|
assert_eq!(storage.conferences[0].autojoin, Autojoin::True);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
storage.conferences[0].jid,
|
storage.conferences[0].jid,
|
||||||
Jid::bare("test-muc", "muc.localhost")
|
BareJid::new("test-muc", "muc.localhost")
|
||||||
);
|
);
|
||||||
assert_eq!(storage.conferences[0].name, "Test MUC");
|
assert_eq!(storage.conferences[0].name, "Test MUC");
|
||||||
assert_eq!(storage.conferences[0].clone().nick.unwrap(), "Coucou");
|
assert_eq!(storage.conferences[0].clone().nick.unwrap(), "Coucou");
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@
|
||||||
//! [`TryFrom<Element>`]: ../try_from/trait.TryFrom.html
|
//! [`TryFrom<Element>`]: ../try_from/trait.TryFrom.html
|
||||||
//! [`Element`]: ../minidom/element/struct.Element.html
|
//! [`Element`]: ../minidom/element/struct.Element.html
|
||||||
|
|
||||||
// Copyright (c) 2017-2018 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
|
// Copyright (c) 2017-2019 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
|
||||||
// Copyright (c) 2017 Maxime “pep” Buquet <pep+code@bouah.net>
|
// Copyright (c) 2017-2019 Maxime “pep” Buquet <pep@bouah.net>
|
||||||
//
|
//
|
||||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
#![deny(missing_docs)]
|
#![deny(missing_docs)]
|
||||||
|
|
||||||
pub use minidom::Element;
|
pub use minidom::Element;
|
||||||
pub use jid::{Jid, JidParseError};
|
pub use jid::{Jid, BareJid, FullJid, JidParseError};
|
||||||
pub use std::convert::{TryFrom, TryInto};
|
pub use std::convert::{TryFrom, TryInto};
|
||||||
pub use crate::util::error::Error;
|
pub use crate::util::error::Error;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
use crate::util::error::Error;
|
use crate::util::error::Error;
|
||||||
use crate::ns;
|
use crate::ns;
|
||||||
use jid::Jid;
|
use jid::FullJid;
|
||||||
use minidom::Element;
|
use minidom::Element;
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
|
|
||||||
|
|
@ -82,7 +82,7 @@ Status, "status", MUC_USER, "code", {
|
||||||
#[derive(Debug, Clone, PartialEq)]
|
#[derive(Debug, Clone, PartialEq)]
|
||||||
pub enum Actor {
|
pub enum Actor {
|
||||||
/// The full JID associated with this user.
|
/// The full JID associated with this user.
|
||||||
Jid(Jid),
|
Jid(FullJid),
|
||||||
|
|
||||||
/// The nickname of this user.
|
/// The nickname of this user.
|
||||||
Nick(String),
|
Nick(String),
|
||||||
|
|
@ -95,7 +95,7 @@ impl TryFrom<Element> for Actor {
|
||||||
check_self!(elem, "actor", MUC_USER);
|
check_self!(elem, "actor", MUC_USER);
|
||||||
check_no_unknown_attributes!(elem, "actor", ["jid", "nick"]);
|
check_no_unknown_attributes!(elem, "actor", ["jid", "nick"]);
|
||||||
check_no_children!(elem, "actor");
|
check_no_children!(elem, "actor");
|
||||||
let jid: Option<Jid> = get_attr!(elem, "jid", Option);
|
let jid: Option<FullJid> = get_attr!(elem, "jid", Option);
|
||||||
let nick = get_attr!(elem, "nick", Option);
|
let nick = get_attr!(elem, "nick", Option);
|
||||||
|
|
||||||
match (jid, nick) {
|
match (jid, nick) {
|
||||||
|
|
@ -190,7 +190,7 @@ generate_element!(
|
||||||
affiliation: Required<Affiliation> = "affiliation",
|
affiliation: Required<Affiliation> = "affiliation",
|
||||||
|
|
||||||
/// The real JID of this user, if you are allowed to see it.
|
/// The real JID of this user, if you are allowed to see it.
|
||||||
jid: Option<Jid> = "jid",
|
jid: Option<FullJid> = "jid",
|
||||||
|
|
||||||
/// The current nickname of this user.
|
/// The current nickname of this user.
|
||||||
nick: Option<String> = "nick",
|
nick: Option<String> = "nick",
|
||||||
|
|
@ -448,7 +448,7 @@ mod tests {
|
||||||
Actor::Jid(jid) => jid,
|
Actor::Jid(jid) => jid,
|
||||||
_ => panic!(),
|
_ => panic!(),
|
||||||
};
|
};
|
||||||
assert_eq!(jid, "foo@bar/baz".parse::<Jid>().unwrap());
|
assert_eq!(jid, "foo@bar/baz".parse::<FullJid>().unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
use crate::iq::{IqGetPayload, IqResultPayload, IqSetPayload};
|
use crate::iq::{IqGetPayload, IqResultPayload, IqSetPayload};
|
||||||
use jid::Jid;
|
use jid::BareJid;
|
||||||
|
|
||||||
generate_elem_id!(
|
generate_elem_id!(
|
||||||
/// Represents a group a contact is part of.
|
/// Represents a group a contact is part of.
|
||||||
|
|
@ -50,7 +50,7 @@ generate_element!(
|
||||||
Item, "item", ROSTER,
|
Item, "item", ROSTER,
|
||||||
attributes: [
|
attributes: [
|
||||||
/// JID of this contact.
|
/// JID of this contact.
|
||||||
jid: Required<Jid> = "jid",
|
jid: Required<BareJid> = "jid",
|
||||||
|
|
||||||
/// Name of this contact.
|
/// Name of this contact.
|
||||||
name: OptionEmpty<String> = "name",
|
name: OptionEmpty<String> = "name",
|
||||||
|
|
@ -172,7 +172,7 @@ mod tests {
|
||||||
assert_eq!(roster.items.len(), 4);
|
assert_eq!(roster.items.len(), 4);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
roster.items[0].jid,
|
roster.items[0].jid,
|
||||||
Jid::from_str("romeo@example.net").unwrap()
|
BareJid::from_str("romeo@example.net").unwrap()
|
||||||
);
|
);
|
||||||
assert_eq!(roster.items[0].name, Some(String::from("Romeo")));
|
assert_eq!(roster.items[0].name, Some(String::from("Romeo")));
|
||||||
assert_eq!(roster.items[0].subscription, Subscription::Both);
|
assert_eq!(roster.items[0].subscription, Subscription::Both);
|
||||||
|
|
@ -184,7 +184,7 @@ mod tests {
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
roster.items[3].jid,
|
roster.items[3].jid,
|
||||||
Jid::from_str("contact@example.org").unwrap()
|
BareJid::from_str("contact@example.org").unwrap()
|
||||||
);
|
);
|
||||||
assert_eq!(roster.items[3].name, Some(String::from("MyContact")));
|
assert_eq!(roster.items[3].name, Some(String::from("MyContact")));
|
||||||
assert_eq!(roster.items[3].subscription, Subscription::None);
|
assert_eq!(roster.items[3].subscription, Subscription::None);
|
||||||
|
|
@ -213,7 +213,7 @@ mod tests {
|
||||||
assert_eq!(roster.items.len(), 1);
|
assert_eq!(roster.items.len(), 1);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
roster.items[0].jid,
|
roster.items[0].jid,
|
||||||
Jid::from_str("test@example.org").unwrap()
|
BareJid::from_str("test@example.org").unwrap()
|
||||||
);
|
);
|
||||||
assert_eq!(roster.items[0].name, None);
|
assert_eq!(roster.items[0].name, None);
|
||||||
assert_eq!(roster.items[0].groups.len(), 2);
|
assert_eq!(roster.items[0].groups.len(), 2);
|
||||||
|
|
@ -248,7 +248,7 @@ mod tests {
|
||||||
assert_eq!(roster.items.len(), 1);
|
assert_eq!(roster.items.len(), 1);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
roster.items[0].jid,
|
roster.items[0].jid,
|
||||||
Jid::from_str("nurse@example.com").unwrap()
|
BareJid::from_str("nurse@example.com").unwrap()
|
||||||
);
|
);
|
||||||
assert_eq!(roster.items[0].name, Some(String::from("Nurse")));
|
assert_eq!(roster.items[0].name, Some(String::from("Nurse")));
|
||||||
assert_eq!(roster.items[0].groups.len(), 1);
|
assert_eq!(roster.items[0].groups.len(), 1);
|
||||||
|
|
@ -270,7 +270,7 @@ mod tests {
|
||||||
assert_eq!(roster.items.len(), 1);
|
assert_eq!(roster.items.len(), 1);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
roster.items[0].jid,
|
roster.items[0].jid,
|
||||||
Jid::from_str("nurse@example.com").unwrap()
|
BareJid::from_str("nurse@example.com").unwrap()
|
||||||
);
|
);
|
||||||
assert!(roster.items[0].name.is_none());
|
assert!(roster.items[0].name.is_none());
|
||||||
assert!(roster.items[0].groups.is_empty());
|
assert!(roster.items[0].groups.is_empty());
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,17 @@
|
||||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
// 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/.
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
use jid::Jid;
|
use jid::BareJid;
|
||||||
|
|
||||||
generate_element!(
|
generate_element!(
|
||||||
/// The stream opening for client-server communications.
|
/// The stream opening for client-server communications.
|
||||||
Stream, "stream", STREAM,
|
Stream, "stream", STREAM,
|
||||||
attributes: [
|
attributes: [
|
||||||
/// The JID of the entity opening this stream.
|
/// The JID of the entity opening this stream.
|
||||||
from: Option<Jid> = "from",
|
from: Option<BareJid> = "from",
|
||||||
|
|
||||||
/// The JID of the entity receiving this stream opening.
|
/// The JID of the entity receiving this stream opening.
|
||||||
to: Option<Jid> = "to",
|
to: Option<BareJid> = "to",
|
||||||
|
|
||||||
/// The id of the stream, used for authentication challenges.
|
/// The id of the stream, used for authentication challenges.
|
||||||
id: Option<String> = "id",
|
id: Option<String> = "id",
|
||||||
|
|
@ -30,7 +30,7 @@ generate_element!(
|
||||||
|
|
||||||
impl Stream {
|
impl Stream {
|
||||||
/// Creates a simple client→server `<stream:stream>` element.
|
/// Creates a simple client→server `<stream:stream>` element.
|
||||||
pub fn new(to: Jid) -> Stream {
|
pub fn new(to: BareJid) -> Stream {
|
||||||
Stream {
|
Stream {
|
||||||
from: None,
|
from: None,
|
||||||
to: Some(to),
|
to: Some(to),
|
||||||
|
|
@ -42,7 +42,7 @@ impl Stream {
|
||||||
|
|
||||||
/// Sets the [@from](#structfield.from) attribute on this `<stream:stream>`
|
/// Sets the [@from](#structfield.from) attribute on this `<stream:stream>`
|
||||||
/// element.
|
/// element.
|
||||||
pub fn with_from(mut self, from: Jid) -> Stream {
|
pub fn with_from(mut self, from: BareJid) -> Stream {
|
||||||
self.from = Some(from);
|
self.from = Some(from);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
@ -92,7 +92,7 @@ mod tests {
|
||||||
fn test_simple() {
|
fn test_simple() {
|
||||||
let elem: Element = "<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='en' version='1.0' id='abc' from='some-server.example'/>".parse().unwrap();
|
let elem: Element = "<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='en' version='1.0' id='abc' from='some-server.example'/>".parse().unwrap();
|
||||||
let stream = Stream::try_from(elem).unwrap();
|
let stream = Stream::try_from(elem).unwrap();
|
||||||
assert_eq!(stream.from, Some(Jid::domain("some-server.example")));
|
assert_eq!(stream.from, Some(BareJid::domain("some-server.example")));
|
||||||
assert_eq!(stream.to, None);
|
assert_eq!(stream.to, None);
|
||||||
assert_eq!(stream.id, Some(String::from("abc")));
|
assert_eq!(stream.id, Some(String::from("abc")));
|
||||||
assert_eq!(stream.version, Some(String::from("1.0")));
|
assert_eq!(stream.version, Some(String::from("1.0")));
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,17 @@
|
||||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
// 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/.
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
use jid::Jid;
|
use jid::BareJid;
|
||||||
|
|
||||||
generate_element!(
|
generate_element!(
|
||||||
/// The stream opening for WebSocket.
|
/// The stream opening for WebSocket.
|
||||||
Open, "open", WEBSOCKET,
|
Open, "open", WEBSOCKET,
|
||||||
attributes: [
|
attributes: [
|
||||||
/// The JID of the entity opening this stream.
|
/// The JID of the entity opening this stream.
|
||||||
from: Option<Jid> = "from",
|
from: Option<BareJid> = "from",
|
||||||
|
|
||||||
/// The JID of the entity receiving this stream opening.
|
/// The JID of the entity receiving this stream opening.
|
||||||
to: Option<Jid> = "to",
|
to: Option<BareJid> = "to",
|
||||||
|
|
||||||
/// The id of the stream, used for authentication challenges.
|
/// The id of the stream, used for authentication challenges.
|
||||||
id: Option<String> = "id",
|
id: Option<String> = "id",
|
||||||
|
|
@ -30,7 +30,7 @@ generate_element!(
|
||||||
|
|
||||||
impl Open {
|
impl Open {
|
||||||
/// Creates a simple client→server `<open/>` element.
|
/// Creates a simple client→server `<open/>` element.
|
||||||
pub fn new(to: Jid) -> Open {
|
pub fn new(to: BareJid) -> Open {
|
||||||
Open {
|
Open {
|
||||||
from: None,
|
from: None,
|
||||||
to: Some(to),
|
to: Some(to),
|
||||||
|
|
@ -42,7 +42,7 @@ impl Open {
|
||||||
|
|
||||||
/// Sets the [@from](#structfield.from) attribute on this `<open/>`
|
/// Sets the [@from](#structfield.from) attribute on this `<open/>`
|
||||||
/// element.
|
/// element.
|
||||||
pub fn with_from(mut self, from: Jid) -> Open {
|
pub fn with_from(mut self, from: BareJid) -> Open {
|
||||||
self.from = Some(from);
|
self.from = Some(from);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue