Class Jabber::Roster::XRosterItem
In: lib/xmpp4r/roster/x/roster.rb
Parent: REXML::Element

Class containing an <item/> element

The ‘name’ attribute has been renamed to ‘iname’ here as ‘name’ is already used by REXML::Element for the element‘s name. It‘s still name=’…’ in XML.

This is all a bit analoguous to Jabber::RosterItem, used by Jabber::IqQueryRoster. But this class lacks the subscription and ask attributes.

Methods

action   action=   groups   groups=   import   iname   iname=   jid   jid=   new  

Public Class methods

Create new XRosterItem from REXML::Element

item:[REXML::Element] source element to copy attributes and children from

[Source]

    # File lib/xmpp4r/roster/x/roster.rb, line 67
67:       def XRosterItem.import(item)
68:         XRosterItem::new.import(item)
69:       end

Construct a new roster item

jid:[JID] Jabber ID
iname:[String] Name in the roster

[Source]

    # File lib/xmpp4r/roster/x/roster.rb, line 58
58:       def initialize(jid=nil, iname=nil)
59:         super('item')
60:         self.jid = jid
61:         self.iname = iname
62:       end

Public Instance methods

Get action for this roster item

  • :add
  • :modify
  • :delete
result:[Symbol] (defaults to :add according to JEP-0144)

[Source]

     # File lib/xmpp4r/roster/x/roster.rb, line 108
108:       def action
109:         case attributes['action']
110:           when 'modify' then :modify
111:           when 'delete' then :delete
112:           else :add
113:         end
114:       end

Set action for this roster item (see action)

[Source]

     # File lib/xmpp4r/roster/x/roster.rb, line 119
119:       def action=(a)
120:         case a
121:           when :modify then attributes['action'] = 'modify'
122:           when :delete then attributes['action'] = 'delete'
123:           else attributes['action'] = 'add'
124:         end
125:       end

Get groups the item belongs to

result:[Array] of [String] The groups

[Source]

     # File lib/xmpp4r/roster/x/roster.rb, line 130
130:       def groups
131:         result = []
132:         each_element('group') { |group|
133:           result.push(group.text)
134:         }
135:         result
136:       end

Set groups the item belongs to, deletes old groups first.

See JEP 0083 for nested groups

ary:[Array] New groups, duplicate values will be removed

[Source]

     # File lib/xmpp4r/roster/x/roster.rb, line 144
144:       def groups=(ary)
145:         # Delete old group elements
146:         delete_elements('group')
147:         
148:         # Add new group elements
149:         ary.uniq.each { |group|
150:           add_element('group').text = group
151:         }
152:       end

Get name of roster item

names can be set by the roster‘s owner himself

return:[String]

[Source]

    # File lib/xmpp4r/roster/x/roster.rb, line 76
76:       def iname
77:         attributes['name']
78:       end

Set name of roster item

val:[String] Name for this item

[Source]

    # File lib/xmpp4r/roster/x/roster.rb, line 83
83:       def iname=(val)
84:         attributes['name'] = val
85:       end

Get JID of roster item Resource of the JID will not be stripped

return:[JID]

[Source]

    # File lib/xmpp4r/roster/x/roster.rb, line 91
91:       def jid
92:         JID::new(attributes['jid'])
93:       end

Set JID of roster item

val:[JID] or nil

[Source]

     # File lib/xmpp4r/roster/x/roster.rb, line 98
 98:       def jid=(val)
 99:         attributes['jid'] = val.nil? ? nil : val.to_s
100:       end

[Validate]