Class: Jabber::JID

Class | Jabber::JID
In: | lib/xmpp4r/jid.rb
Parent: | Object

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)

Escape JID

[Source]

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

new(node = "", domain = nil, resource = nil)

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

<=>(o)

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

==(o)

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?

domain()

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

domain=(v)

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

empty?()

Test if jid is empty

[Source]

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

eql?(o)

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

hash()

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

node()

Get the JID‘s node

[Source]

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

node=(v)

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

resource()

Get the JID‘s resource

[Source]

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

resource=(v)

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

strip()

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

strip!()

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

stripped?()

Test id jid is strepped

[Source]

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

to_s()

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]