Class Jabber::JID
In: lib/xmpp4r/jid.rb
Parent: Object
Message Presence XMPPStanza Iq XMPPElement ErrorResponse X IqQuery JabberError ComponentAuthenticationFailure ArgumentError SOCKS5Error ServerError NoNameXmlnsRegistered ClientAuthenticationFailure Connection Client Component Client Singleton IdGenerator Comparable JID StandardError REXML::Element Stream IqQuery IqQueryVersion IqQueryRoster IqQueryBytestreams IqQueryRPC IqQueryMUCOwner IqQueryMUCAdmin IqQueryDiscoItems IqQueryDiscoInfo Responder SimpleResponder XRosterItem RosterXItem XMPPElement RosterItem IqFeature StreamHost IqSiFile IqSiFileRange IqSi StreamHostUsed C Body HTML UserItem XMUCUserInvite Tune Configuration Items Item IqPubSub Publish Event IqPubSubOwner Subscription Unsubscribe Feature Item Identity XDataField XDataReported XDataTitle XDataInstructions IqVcard XRoster RosterX X XMUC XMUCUser XDelay XData Iq IqCommand SOCKS5Bytestreams SOCKS5BytestreamsTarget SOCKS5BytestreamsInitiator SOCKS5BytestreamsServerStreamHost TCPSocket SOCKS5Socket IBB IBBTarget IBBInitiator XMLRPC::ParserWriterChooseMixin Client Server XMLRPC::ParseContentType XMLRPC::BasicServer MUCClient SimpleMUCClient MUC::UserItem XMUCUserItem IqQueryMUCAdminItem XParent Base Anonymous DigestMD5 Plain PubSub::ServiceHelper Helper SubscriptionConfig NodeConfig OwnerNodeConfig EventItems EventItem ServiceHelper NodeHelper FileSource Base Bot CallbackList Callback StreamParser Semaphore Helper Responder SOCKS5BytestreamsPeer SOCKS5BytestreamsServer IBBQueueItem Helper MUCBrowser NodeBrowser Responder Helper Helper lib/xmpp4r/message.rb lib/xmpp4r/connection.rb lib/xmpp4r/xmppstanza.rb lib/xmpp4r/iq.rb lib/xmpp4r/callbacks.rb lib/xmpp4r/idgenerator.rb lib/xmpp4r/stream.rb lib/xmpp4r/client.rb lib/xmpp4r/jid.rb lib/xmpp4r/x.rb lib/xmpp4r/streamparser.rb lib/xmpp4r/semaphore.rb lib/xmpp4r/errors.rb lib/xmpp4r/component.rb lib/xmpp4r/presence.rb lib/xmpp4r/xmppelement.rb lib/xmpp4r/query.rb XParent lib/xmpp4r/version/helper/responder.rb lib/xmpp4r/version/helper/simpleresponder.rb lib/xmpp4r/version/iq/version.rb Version lib/xmpp4r/roster/x/roster.rb lib/xmpp4r/roster/helper/roster.rb lib/xmpp4r/roster/iq/roster.rb Roster lib/xmpp4r/feature_negotiation/iq/feature.rb FeatureNegotiation lib/xmpp4r/command/iq/command.rb lib/xmpp4r/command/helper/responder.rb Command lib/xmpp4r/bytestreams/iq/si.rb lib/xmpp4r/bytestreams/helper/ibb/initiator.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb lib/xmpp4r/bytestreams/iq/bytestreams.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb lib/xmpp4r/bytestreams/helper/ibb/target.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb lib/xmpp4r/bytestreams/helper/ibb/base.rb Bytestreams lib/xmpp4r/caps/helper/helper.rb lib/xmpp4r/caps/c.rb Caps lib/xmpp4r/xhtml/html.rb XHTML lib/xmpp4r/rpc/helper/server.rb lib/xmpp4r/rpc/helper/client.rb lib/xmpp4r/rpc/iq/rpc.rb RPC lib/xmpp4r/muc/iq/mucadminitem.rb lib/xmpp4r/muc/x/muc.rb lib/xmpp4r/muc/item.rb lib/xmpp4r/muc/helper/simplemucclient.rb lib/xmpp4r/muc/iq/mucadmin.rb lib/xmpp4r/muc/helper/mucbrowser.rb lib/xmpp4r/muc/x/mucuseritem.rb lib/xmpp4r/muc/x/mucuserinvite.rb lib/xmpp4r/muc/iq/mucowner.rb lib/xmpp4r/muc/helper/mucclient.rb MUC lib/xmpp4r/delay/x/delay.rb Delay lib/xmpp4r/sasl.rb SASL lib/xmpp4r/tune/helper/helper.rb lib/xmpp4r/tune/tune.rb UserTune lib/xmpp4r/pubsub/children/item.rb lib/xmpp4r/pubsub/children/configuration.rb lib/xmpp4r/pubsub/children/subscription.rb lib/xmpp4r/pubsub/helper/servicehelper.rb lib/xmpp4r/pubsub/children/unsubscribe.rb lib/xmpp4r/pubsub/children/publish.rb lib/xmpp4r/pubsub/children/event.rb lib/xmpp4r/pubsub/iq/pubsub.rb lib/xmpp4r/pubsub/helper/nodebrowser.rb lib/xmpp4r/pubsub/helper/nodehelper.rb lib/xmpp4r/pubsub/children/items.rb lib/xmpp4r/pubsub/children/subscription_config.rb lib/xmpp4r/pubsub/children/node_config.rb PubSub lib/xmpp4r/httpbinding/client.rb HTTPBinding lib/xmpp4r/discovery/iq/discoinfo.rb lib/xmpp4r/discovery/helper/responder.rb lib/xmpp4r/discovery/iq/discoitems.rb Discovery lib/xmpp4r/dataforms/x/data.rb Dataforms lib/xmpp4r/bytestreams/helper/filetransfer.rb TransferSource FileTransfer lib/xmpp4r/vcard/helper/vcard.rb lib/xmpp4r/vcard/iq/vcard.rb Vcard lib/xmpp4r/framework/base.rb lib/xmpp4r/framework/bot.rb Framework Jabber dot/m_99_0.png

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

[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]