Class Jabber::Roster::RosterItem
In: lib/xmpp4r/roster/iq/roster.rb
Parent: REXML::Element

Class containing the <item/> elements of the roster

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.

Methods

ask   ask=   groups   groups=   import   iname   iname=   jid   jid=   new   subscription   subscription=  

Public Class methods

Create new RosterItem from REXML::Element

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

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 126
126:       def RosterItem.import(item)
127:         RosterItem::new.import(item)
128:       end

Construct a new roster item

jid:[JID] Jabber ID
iname:[String] Name in the roster
subscription:[Symbol] Type of subscription (see RosterItem#subscription=)
ask:[Symbol] or [Nil] Can be :subscribe

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 115
115:       def initialize(jid=nil, iname=nil, subscription=nil, ask=nil)
116:         super('item')
117:         self.jid = jid
118:         self.iname = iname
119:         self.subscription = subscription
120:         self.ask = ask
121:       end

Public Instance methods

Get if asking for subscription

result:[Symbol] nil or :subscribe

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 197
197:       def ask
198:         case attributes['ask']
199:           when 'subscribe' then :subscribe
200:           else nil
201:         end
202:       end

Set if asking for subscription

val:[Symbol] nil or :subscribe

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 207
207:       def ask=(val)
208:         case val
209:           when :subscribe then attributes['ask'] = 'subscribe'
210:           else attributes['ask'] = nil
211:         end
212:       end

Get groups the item belongs to

result:[Array] of [String] The groups

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 217
217:       def groups
218:         result = []
219:         each_element('group') { |group|
220:           result.push(group.text)
221:         }
222:         result
223:       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/iq/roster.rb, line 231
231:       def groups=(ary)
232:         # Delete old group elements
233:         delete_elements('group')
234:         
235:         # Add new group elements
236:         ary.uniq.each { |group|
237:           add_element('group').text = group
238:         }
239:       end

Get name of roster item

names can be set by the roster‘s owner himself

return:[String]

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 135
135:       def iname
136:         attributes['name']
137:       end

Set name of roster item

val:[String] Name for this item

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 142
142:       def iname=(val)
143:         attributes['name'] = val
144:       end

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

return:[JID]

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 150
150:       def jid
151:         (a = attributes['jid']) ? JID::new(a) : nil
152:       end

Set JID of roster item

val:[JID] or nil

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 157
157:       def jid=(val)
158:         attributes['jid'] = val.nil? ? nil : val.to_s
159:       end

Get subscription type of roster item

result:[Symbol] or [Nil] The following values are valid according to RFC3921:
  • :both
  • :from
  • :none
  • :remove
  • :to

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 169
169:       def subscription
170:         case attributes['subscription']
171:           when 'both' then :both
172:           when 'from' then :from
173:           when 'none' then :none
174:           when 'remove' then :remove
175:           when 'to' then :to
176:           else nil
177:         end
178:       end

Set subscription type of roster item

val:[Symbol] or [Nil] See subscription for possible Symbols

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 183
183:       def subscription=(val)
184:         case val
185:           when :both then attributes['subscription'] = 'both'
186:           when :from then attributes['subscription'] = 'from'
187:           when :none then attributes['subscription'] = 'none'
188:           when :remove then attributes['subscription'] = 'remove'
189:           when :to then attributes['subscription'] = 'to'
190:           else attributes['subscription'] = nil
191:         end
192:       end

[Validate]