Class | Jabber::Presence |
In: |
lib/xmpp4r/presence.rb
|
Parent: | XMPPStanza |
The presence class is used to construct presence messages to send to the Jabber service.
PRESENCE_STATUS | = | { :chat => 4, nil => 3, :dnd => 2, :away => 1, :xa => 0, :unavailable => -1, :error => -2 } | Compare two presences. The most suitable to talk with is the biggest. |
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 24: def initialize(show=nil, status=nil, priority=nil) 25: super() 26: set_show(show) if show 27: set_status(status) if status 28: set_priority(priority) if priority 29: end
Compare two presences using priority (with cmp_interest as fall-back).
# File lib/xmpp4r/presence.rb, line 197 197: def <=>(o) 198: if priority.to_i == o.priority.to_i 199: cmp_interest(o) 200: else 201: priority.to_i <=> o.priority.to_i 202: end 203: end
# File lib/xmpp4r/presence.rb, line 215 215: def cmp_interest(o) 216: if type.nil? 217: if o.type.nil? 218: # both available. 219: PRESENCE_STATUS[show] <=> PRESENCE_STATUS[o.show] 220: else 221: return -1 222: end 223: elsif o.type.nil? 224: return 1 225: else 226: # both are non-nil. We consider this is equal. 227: return 0 228: end 229: 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 178: def priority=(val) 179: if val.nil? 180: delete_element('priority') 181: else 182: replace_element_text('priority', val) 183: end 184: end
Get Availability Status (RFC3921 - 5.2)
result: | [Symbol] or [Nil] Valid values according to RFC3921: |
# File lib/xmpp4r/presence.rb, line 89 89: def show 90: e = first_element('show') 91: text = e ? e.text : nil 92: case text 93: when 'away' then :away 94: when 'chat' then :chat 95: when 'dnd' then :dnd 96: when 'xa' then :xa 97: else nil 98: end 99: end
Set Availability Status
val: | [Symbol] or [Nil] See show for explanation |
# File lib/xmpp4r/presence.rb, line 104 104: def show=(val) 105: xe = first_element('show') 106: if xe.nil? 107: xe = add_element('show') 108: end 109: case val 110: when String then raise "Invalid value for show." 111: when :away then text = 'away' 112: when :chat then text = 'chat' 113: when :dnd then text = 'dnd' 114: when :xa then text = 'xa' 115: when nil then text = nil 116: else raise "Invalid value for show." 117: end 118: 119: if text.nil? 120: delete_element(xe) 121: else 122: xe.text = text 123: end 124: end
Get type of presence
result: | [Symbol] or [Nil] Possible values are: |
See RFC3921 - 2.2.1. for explanation.
# File lib/xmpp4r/presence.rb, line 44 44: def type 45: case super 46: when 'error' then :error 47: when 'probe' then :probe 48: when 'subscribe' then :subscribe 49: when 'subscribed' then :subscribed 50: when 'unavailable' then :unavailable 51: when 'unsubscribe' then :unsubscribe 52: when 'unsubscribed' then :unsubscribed 53: else nil 54: end 55: end
Set type of presence
val: | [Symbol] See type for possible subscription types |
# File lib/xmpp4r/presence.rb, line 60 60: def type=(val) 61: case val 62: when :error then super('error') 63: when :probe then super('probe') 64: when :subscribe then super('subscribe') 65: when :subscribed then super('subscribed') 66: when :unavailable then super('unavailable') 67: when :unsubscribe then super('unsubscribe') 68: when :unsubscribed then super('unsubscribed') 69: else super(nil) 70: end 71: end