Crate jid

source ·
Expand description

Represents XMPP addresses, also known as JabberIDs (JIDs) for the XMPP protocol. A Jid can have between one and three parts in the form node@domain/resource:

  • the (optional) node part designates a specific account/service on a server, for example username@server.com
  • the domain part designates a server, for example irc.jabberfr.org
  • the (optional) resource part designates a more specific client, such as a participant in a groupchat (jabberfr@chat.jabberfr.org/user) or a specific client device associated with an account (user@example.com/dino)

The Jid enum can be one of two variants, containing a more specific type:

  • BareJid (Jid::Bare variant): a JID without a resource
  • FullJid (Jid::Full variant): a JID with a resource

Jids as per the XMPP protocol only ever contain valid UTF-8. However, creating any form of Jid can fail in one of the following cases:

  • wrong syntax: creating a Jid with an empty (yet declared) node or resource part, such as @example.com or user@example.com/
  • stringprep error: some characters were invalid according to the stringprep algorithm, such as mixing left-to-write and right-to-left characters

Structs

  • A struct representing a bare Jabber ID, without a resource part.
  • The DomainPart is the part between the (optional) @ and the (optional) / in any [Jid], whether [BareJid] or [FullJid].
  • A struct representing a full Jabber ID, with a resource part.
  • The NodePart is the optional part before the (optional) @ in any [Jid], whether [BareJid] or [FullJid].
  • The ResourcePart is the optional part after the / in a [Jid]. It is mandatory in [FullJid].

Enums

  • An error that signifies that a Jid cannot be parsed from a string.
  • An enum representing a Jabber ID. It can be either a FullJid or a BareJid.