class Jabber::Presence
The presence class is used to construct presence messages to send to the Jabber service.
Constants
- PRESENCE_STATUS
Compare two presences. The most suitable to talk with is the biggest.
Public Class Methods
Create presence stanza
- show
- Symbol
-
Initial Availability Status (see show)
- status
- String
-
Initial status message
- priority
- Fixnum
-
Initial priority value
# File lib/xmpp4r/presence.rb, line 24 def initialize(show=nil, status=nil, priority=nil) super() set_show(show) if show set_status(status) if status set_priority(priority) if priority end
Public Instance Methods
Compare two presences using priority (with #cmp_interest as fall-back).
# File lib/xmpp4r/presence.rb, line 197 def <=>(o) if priority.to_i == o.priority.to_i cmp_interest(o) else priority.to_i <=> o.priority.to_i end end
# File lib/xmpp4r/presence.rb, line 215 def cmp_interest(o) if type.nil? if o.type.nil? # both available. PRESENCE_STATUS[show] <=> PRESENCE_STATUS[o.show] else return -1 end elsif o.type.nil? return 1 else # both are non-nil. We consider this is equal. return 0 end end
Get presence priority, or nil if absent
- result
- Integer
# File lib/xmpp4r/presence.rb, line 163 def priority e = first_element_text('priority') if e return e.to_i else return nil end end
Set presence priority
- val
- Integer
-
Priority value between -128 and +127
Warning: negative values make you receive no subscription requests etc. (RFC3921 - 2.2.2.3.)
# File lib/xmpp4r/presence.rb, line 178 def priority=(val) if val.nil? delete_element('priority') else replace_element_text('priority', val) end end
Set presence priority (chaining-friendly)
- val
- Integer
-
Priority value between -128 and +127
# File lib/xmpp4r/presence.rb, line 189 def set_priority(val) self.priority = val self end
Set Availability Status (chaining-friendly)
- val
- Symbol
-
or [Nil] See show for explanation
# File lib/xmpp4r/presence.rb, line 129 def set_show(val) self.show = val self end
Set status message (chaining-friendly)
- val
- String
-
or nil
# File lib/xmpp4r/presence.rb, line 155 def set_status(val) self.status = val self end
Set type of presence (chaining-friendly)
- val
- Symbol
-
See type for possible subscription types
# File lib/xmpp4r/presence.rb, line 76 def set_type(val) self.type = val self end
Get Availability Status (RFC3921 - 5.2)
- result
- Symbol
-
or [Nil] Valid values according to RFC3921:
-
nil (Available, no <show/> element)
-
:away
-
:chat (Free for chat)
-
:dnd (Do not disturb)
-
:xa (Extended away)
# File lib/xmpp4r/presence.rb, line 89 def show e = first_element('show') text = e ? e.text : nil case text when 'away' then :away when 'chat' then :chat when 'dnd' then :dnd when 'xa' then :xa else nil end end
Set Availability Status
- val
- Symbol
-
or [Nil] See show for explanation
# File lib/xmpp4r/presence.rb, line 104 def show=(val) xe = first_element('show') if xe.nil? xe = add_element('show') end case val when String then raise "Invalid value for show." when :away then text = 'away' when :chat then text = 'chat' when :dnd then text = 'dnd' when :xa then text = 'xa' when nil then text = nil else raise "Invalid value for show." end if text.nil? delete_element(xe) else xe.text = text end end
Get status message
- result
- String
-
or nil
# File lib/xmpp4r/presence.rb, line 137 def status first_element_text('status') end
Set status message
- val
- String
-
or nil
# File lib/xmpp4r/presence.rb, line 144 def status=(val) if val.nil? delete_element('status') else replace_element_text('status', val) end end
Get type of presence
- result
- Symbol
-
or [Nil] Possible values are:
-
:error
-
:probe (Servers send this to request presence information)
-
:subscribe (Subscription request)
-
:subscribed (Subscription approval)
-
:unavailable (User has gone offline)
-
:unsubscribe (Unsubscription request)
-
:unsubscribed (Unsubscription approval)
- nil
-
(available)
See RFC3921 - 2.2.1. for explanation.
# File lib/xmpp4r/presence.rb, line 44 def type case super when 'error' then :error when 'probe' then :probe when 'subscribe' then :subscribe when 'subscribed' then :subscribed when 'unavailable' then :unavailable when 'unsubscribe' then :unsubscribe when 'unsubscribed' then :unsubscribed else nil end end
Set type of presence
- val
- Symbol
-
See type for possible subscription types
# File lib/xmpp4r/presence.rb, line 60 def type=(val) case val when :error then super('error') when :probe then super('probe') when :subscribe then super('subscribe') when :subscribed then super('subscribed') when :unavailable then super('unavailable') when :unsubscribe then super('unsubscribe') when :unsubscribed then super('unsubscribed') else super(nil) end end