Class Jabber::JID
In: lib/xmpp4r/jid.rb
Parent: Object
XMLStanza Message Presence Iq REXML::Element X IqQuery Error StreamHost IqSiFileRange IqSiFile StreamHostUsed IqSi IqFeature XRosterItem RosterItem XMUCUserItem XMUCUserInvite XDataField XDataReported XDataTitle XDataInstructions Feature Identity Item IqVcard Singleton IdGenerator Connection Client Component Comparable JID RuntimeError AuthenticationFailure ErrorException SOCKS5Error Stream SOCKS5Bytestreams SOCKS5BytestreamsTarget SOCKS5BytestreamsInitiator SOCKS5BytestreamsServerStreamHost TCPSocket SOCKS5Socket IqQuery IqQueryBytestreams IqQueryVersion IqQueryRoster IqQueryDiscoItems IqQueryDiscoInfo IBB IBBTarget IBBInitiator Responder SimpleResponder X XRoster XMUCUser XMUC XDelay XData MUCClient SimpleMUCClient Base DigestMD5 Plain FileSource StreamParser SOCKS5BytestreamsPeer SOCKS5BytestreamsServer IBBQueueItem Helper MUCBrowser Helper Helper lib/xmpp4r/authenticationfailure.rb lib/xmpp4r/idgenerator.rb lib/xmpp4r/connection.rb lib/xmpp4r/iq.rb lib/xmpp4r/jid.rb lib/xmpp4r/xmlstanza.rb lib/xmpp4r/errorexception.rb lib/xmpp4r/stream.rb lib/xmpp4r/client.rb lib/xmpp4r/x.rb lib/xmpp4r/streamparser.rb lib/xmpp4r/error.rb lib/xmpp4r/component.rb lib/xmpp4r/query.rb lib/xmpp4r/message.rb lib/xmpp4r/presence.rb lib/xmpp4r/bytestreams/helper/ibb/initiator.rb lib/xmpp4r/bytestreams/iq/si.rb lib/xmpp4r/bytestreams/iq/bytestreams.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb lib/xmpp4r/bytestreams/helper/ibb/base.rb lib/xmpp4r/bytestreams/helper/ibb/target.rb Bytestreams lib/xmpp4r/version/iq/version.rb lib/xmpp4r/version/helper/responder.rb lib/xmpp4r/version/helper/simpleresponder.rb Version lib/xmpp4r/feature_negotiation/iq/feature.rb FeatureNegotiation lib/xmpp4r/roster/helper/roster.rb lib/xmpp4r/roster/iq/roster.rb lib/xmpp4r/roster/x/roster.rb Roster lib/xmpp4r/muc/x/muc.rb lib/xmpp4r/muc/helper/mucclient.rb lib/xmpp4r/muc/x/mucuseritem.rb lib/xmpp4r/muc/helper/mucbrowser.rb lib/xmpp4r/muc/x/mucuserinvite.rb lib/xmpp4r/muc/helper/simplemucclient.rb MUC lib/xmpp4r/sasl.rb SASL lib/xmpp4r/bytestreams/helper/filetransfer.rb TransferSource FileTransfer lib/xmpp4r/delay/x/delay.rb Delay lib/xmpp4r/dataforms/x/data.rb Dataforms lib/xmpp4r/discovery/iq/discoinfo.rb lib/xmpp4r/discovery/iq/discoitems.rb Discovery lib/xmpp4r/vcard/helper/vcard.rb lib/xmpp4r/vcard/iq/vcard.rb Vcard Jabber Module: Jabber

The JID class represents a Jabber Identifier as described by RFC3920 section 3.1.

Note that you can use JIDs also for Sorting, Hash keys, …

Methods

<=>   ==   bare   bare!   bared?   domain   domain=   empty?   eql?   escape   hash   new   node   node=   resource   resource=   strip   strip!   stripped?   to_s  

Included Modules

Comparable

Constants

PATTERN = /^(?:([^@]*)@)??([^@\/]*)(?:\/(.*?))?$/
USE_STRINGPREP = true
USE_STRINGPREP = false

Public Class methods

Escape JID

[Source]

     # File lib/xmpp4r/jid.rb, line 152
152:     def JID::escape(jid)
153:       return jid.to_s.gsub('@', '%')
154:     end

Create a new JID. If called as new(‘a@b/c’), parse the string and split (node, domain, resource)

[Source]

    # File lib/xmpp4r/jid.rb, line 26
26:     def initialize(node = "", domain = nil, resource = nil)
27:       @resource = resource
28:       @domain = domain
29:       @node = node
30:       if @domain.nil? and @resource.nil? and @node
31:         @node, @domain, @resource = @node.to_s.scan(PATTERN).first
32:       end
33: 
34:       if USE_STRINGPREP
35:         @node = IDN::Stringprep.nodeprep(@node) if @node
36:         @domain = IDN::Stringprep.nameprep(@domain) if @domain
37:         @resource = IDN::Stringprep.resourceprep(@resource) if @resource
38:       else
39:         @node.downcase! if @node
40:         @domain.downcase! if @domain
41:       end
42: 
43:       raise ArgumentError, 'Node too long' if (@node || '').length > 1023
44:       raise ArgumentError, 'Domain too long' if (@domain || '').length > 1023
45:       raise ArgumentError, 'Resource too long' if (@resource || '').length > 1023
46:     end

Public Instance methods

Compare two JIDs, helpful for sorting etc.

String representations are compared, see JID#to_s

[Source]

     # File lib/xmpp4r/jid.rb, line 107
107:     def <=>(o)
108:       to_s <=> o.to_s
109:     end

Ccompare to another JID

String representations are compared, see JID#to_s

[Source]

     # File lib/xmpp4r/jid.rb, line 98
 98:     def ==(o)
 99:       to_s == o.to_s
100:     end
bare()

Alias for strip

bare!()

Alias for strip!

bared?()

Alias for stripped?

Get the JID’s domain

[Source]

     # File lib/xmpp4r/jid.rb, line 125
125:     def domain
126:       return nil if @domain.empty?
127:       @domain
128:     end

Set the JID’s domain

[Source]

     # File lib/xmpp4r/jid.rb, line 131
131:     def domain=(v)
132:       @domain = v.to_s
133:       if USE_STRINGPREP
134:         @domain = IDN::Stringprep.nodeprep(@domain)
135:       end
136:     end

Test if jid is empty

[Source]

     # File lib/xmpp4r/jid.rb, line 157
157:     def empty?
158:       to_s.empty?
159:     end

Ccompare to another JID

String representations are compared, see JID#to_s

[Source]

    # File lib/xmpp4r/jid.rb, line 90
90:     def eql?(o)
91:       to_s.eql?(o.to_s)
92:     end

Returns a hash value of the String representation (see JID#to_s)

[Source]

    # File lib/xmpp4r/jid.rb, line 82
82:     def hash
83:       return to_s.hash
84:     end

Get the JID’s node

[Source]

     # File lib/xmpp4r/jid.rb, line 112
112:     def node
113:       @node
114:     end

Set the JID’s node

[Source]

     # File lib/xmpp4r/jid.rb, line 117
117:     def node=(v)
118:       @node = v.to_s
119:       if USE_STRINGPREP
120:         @node = IDN::Stringprep.nodeprep(@node) if @node
121:       end
122:     end

Get the JID’s resource

[Source]

     # File lib/xmpp4r/jid.rb, line 139
139:     def resource
140:       @resource
141:     end

Set the JID’s resource

[Source]

     # File lib/xmpp4r/jid.rb, line 144
144:     def resource=(v)
145:       @resource = v.to_s
146:       if USE_STRINGPREP
147:         @resource = IDN::Stringprep.nodeprep(@resource)
148:       end
149:     end

Returns a new JID with resource removed.

return:[JID]

[Source]

    # File lib/xmpp4r/jid.rb, line 65
65:     def strip
66:       JID::new(@node, @domain)
67:     end

Removes the resource (sets it to nil)

return:[JID] self

[Source]

    # File lib/xmpp4r/jid.rb, line 73
73:     def strip!
74:       @resource = nil
75:       self
76:     end

Test id jid is strepped

[Source]

     # File lib/xmpp4r/jid.rb, line 162
162:     def stripped?
163:       @resource.nil?
164:     end

Returns a string representation of the JID

  • ""
  • "domain"
  • "node@domain"
  • "domain/resource"
  • "node@domain/resource"

[Source]

    # File lib/xmpp4r/jid.rb, line 55
55:     def to_s
56:       s = @domain
57:       s = "#{@node}@#{s}" if @node
58:       s += "/#{@resource}" if @resource
59:       return s
60:     end

[Validate]