xmpp: Update to the new jid crate

This commit is contained in:
Emmanuel Gil Peyrot 2023-06-20 14:51:13 +02:00
commit cea9c04507

View file

@ -33,7 +33,7 @@ use xmpp_parsers::{
pubsub::pubsub::{Items, PubSub}, pubsub::pubsub::{Items, PubSub},
roster::{Item as RosterItem, Roster}, roster::{Item as RosterItem, Roster},
stanza_error::{DefinedCondition, ErrorType, StanzaError}, stanza_error::{DefinedCondition, ErrorType, StanzaError},
BareJid, Element, FullJid, Jid, BareJid, Element, Jid,
}; };
#[macro_use] #[macro_use]
extern crate log; extern crate log;
@ -180,7 +180,7 @@ impl ClientBuilder<'_> {
pub fn build(self) -> Agent { pub fn build(self) -> Agent {
let jid: Jid = if let Some(resource) = &self.resource { let jid: Jid = if let Some(resource) = &self.resource {
self.jid.clone().with_resource(resource.to_string()).into() self.jid.with_resource(resource).unwrap().into()
} else { } else {
self.jid.clone().into() self.jid.clone().into()
}; };
@ -233,8 +233,8 @@ impl Agent {
} }
let nick = nick.unwrap_or_else(|| self.default_nick.read().unwrap().clone()); let nick = nick.unwrap_or_else(|| self.default_nick.read().unwrap().clone());
let room_jid = room.with_resource(nick); let room_jid = room.with_resource(&nick).unwrap();
let mut presence = Presence::new(PresenceType::None).with_to(Jid::Full(room_jid)); let mut presence = Presence::new(PresenceType::None).with_to(room_jid);
presence.add_payload(muc); presence.add_payload(muc);
presence.set_status(String::from(lang), String::from(status)); presence.set_status(String::from(lang), String::from(status));
let _ = self.client.send_stanza(presence.into()).await; let _ = self.client.send_stanza(presence.into()).await;
@ -262,8 +262,8 @@ impl Agent {
lang: &str, lang: &str,
text: &str, text: &str,
) { ) {
let recipient: Jid = room.with_resource(recipient).into(); let recipient: Jid = room.with_resource(&recipient).unwrap().into();
let mut message = Message::new(Some(recipient)).with_payload(MucUser::new()); let mut message = Message::new(recipient).with_payload(MucUser::new());
message.type_ = MessageType::Chat; message.type_ = MessageType::Chat;
message message
.bodies .bodies
@ -367,8 +367,8 @@ impl Agent {
let event = match from.clone() { let event = match from.clone() {
Jid::Full(full) => Event::RoomMessage( Jid::Full(full) => Event::RoomMessage(
message.id.clone(), message.id.clone(),
from.clone().into(), from.to_bare(),
full.resource, full.resource().to_owned(),
body.clone(), body.clone(),
), ),
Jid::Bare(bare) => { Jid::Bare(bare) => {
@ -390,8 +390,8 @@ impl Agent {
} }
Jid::Full(full) => Event::RoomPrivateMessage( Jid::Full(full) => Event::RoomPrivateMessage(
message.id.clone(), message.id.clone(),
full.clone().into(), full.to_bare(),
full.resource, full.resource().to_owned(),
body.clone(), body.clone(),
), ),
}; };
@ -402,11 +402,8 @@ impl Agent {
} }
if !found_special_message { if !found_special_message {
let event = Event::ChatMessage( let event =
message.id.clone(), Event::ChatMessage(message.id.clone(), from.to_bare(), body.clone());
from.clone().into(),
body.clone(),
);
events.push(event) events.push(event)
} }
} }
@ -426,10 +423,7 @@ impl Agent {
async fn handle_presence(&mut self, presence: Presence) -> Vec<Event> { async fn handle_presence(&mut self, presence: Presence) -> Vec<Event> {
let mut events = vec![]; let mut events = vec![];
let from: BareJid = match presence.from.clone().unwrap() { let from = presence.from.unwrap().to_bare();
Jid::Full(FullJid { node, domain, .. }) => BareJid { node, domain },
Jid::Bare(bare) => bare,
};
for payload in presence.payloads.into_iter() { for payload in presence.payloads.into_iter() {
let muc_user = match MucUser::try_from(payload) { let muc_user = match MucUser::try_from(payload) {
Ok(muc_user) => muc_user, Ok(muc_user) => muc_user,