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

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=   iname   iname=   jid   jid=   new   subscription   subscription=  

Public Class methods

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 95
 95:       def initialize(jid=nil, iname=nil, subscription=nil, ask=nil)
 96:         super()
 97:         self.jid = jid
 98:         self.iname = iname
 99:         self.subscription = subscription
100:         self.ask = ask
101:       end

Public Instance methods

Get if asking for subscription

result:[Symbol] nil or :subscribe

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 170
170:       def ask
171:         case attributes['ask']
172:           when 'subscribe' then :subscribe
173:           else nil
174:         end
175:       end

Set if asking for subscription

val:[Symbol] nil or :subscribe

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 180
180:       def ask=(val)
181:         case val
182:           when :subscribe then attributes['ask'] = 'subscribe'
183:           else attributes['ask'] = nil
184:         end
185:       end

Get groups the item belongs to

result:[Array] of [String] The groups

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 190
190:       def groups
191:         result = []
192:         each_element('group') { |group|
193:           result.push(group.text)
194:         }
195:         result.uniq
196:       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 204
204:       def groups=(ary)
205:         # Delete old group elements
206:         delete_elements('group')
207:         
208:         # Add new group elements
209:         ary.uniq.each { |group|
210:           add_element('group').text = group
211:         }
212:       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 108
108:       def iname
109:         attributes['name']
110:       end

Set name of roster item

val:[String] Name for this item

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 115
115:       def iname=(val)
116:         attributes['name'] = val
117:       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 123
123:       def jid
124:         (a = attributes['jid']) ? JID::new(a) : nil
125:       end

Set JID of roster item

val:[JID] or nil

[Source]

     # File lib/xmpp4r/roster/iq/roster.rb, line 130
130:       def jid=(val)
131:         attributes['jid'] = val.nil? ? nil : val.to_s
132:       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 142
142:       def subscription
143:         case attributes['subscription']
144:           when 'both' then :both
145:           when 'from' then :from
146:           when 'none' then :none
147:           when 'remove' then :remove
148:           when 'to' then :to
149:           else nil
150:         end
151:       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 156
156:       def subscription=(val)
157:         case val
158:           when :both then attributes['subscription'] = 'both'
159:           when :from then attributes['subscription'] = 'from'
160:           when :none then attributes['subscription'] = 'none'
161:           when :remove then attributes['subscription'] = 'remove'
162:           when :to then attributes['subscription'] = 'to'
163:           else attributes['subscription'] = nil
164:         end
165:       end

[Validate]