diff --git a/parsers/src/bookmarks.rs b/parsers/src/bookmarks.rs index 1f68ce53..3a2c9a64 100644 --- a/parsers/src/bookmarks.rs +++ b/parsers/src/bookmarks.rs @@ -4,14 +4,19 @@ // 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/. +//! +//! Chatroom bookmarks from [XEP-0048 v1.0](https://xmpp.org/extensions/attic/xep-0048-1.0.html). Only use on older servers +//! which do not advertise `urn:xmpp:bookmarks:1#compat` on the user's BareJID in a disco info request. +//! On modern compliant servers, use the [`crate::bookmarks2`] module instead. +//! +//! See [ModernXMPP docs](https://docs.modernxmpp.org/client/groupchat/#bookmarks) on how to handle all historic +//! and newer specifications for your clients. +//! +//! This module exposes the [`Autojoin`][crate::bookmarks::Autojoin] boolean flag, the [`Conference`][crate::bookmarks::Conference] chatroom element, and the [`crate::ns::BOOKMARKS`] XML namespace. + use jid::BareJid; -generate_attribute!( - /// Whether a conference bookmark should be joined automatically. - Autojoin, - "autojoin", - bool -); +pub use crate::bookmarks2::Autojoin; generate_element!( /// A conference bookmark. @@ -35,6 +40,23 @@ generate_element!( ] ); +impl Conference { + /// Turns a XEP-0048 Conference element into a XEP-0402 "Bookmarks2" Conference element, in a + /// tuple with the room JID. + pub fn into_bookmarks2(self) -> (BareJid, crate::bookmarks2::Conference) { + ( + self.jid, + crate::bookmarks2::Conference { + autojoin: self.autojoin, + name: self.name, + nick: self.nick, + password: self.password, + extensions: vec![], + }, + ) + } +} + generate_element!( /// An URL bookmark. Url, "url", BOOKMARKS,