Class: Jabber::Presence

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.

### Methods

<=> cmp_interest new priority priority= set_priority set_show set_status set_type show show= status status= type type=

### Included Modules

Comparable XParent

### Constants

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.

### Public Class methods

new(show=nil, status=nil, priority=nil)

Create presence stanza

show: | [String] Initial Availability Status
status: | [String] Initial status message
priority: | [Fixnum] Initial priority value

[Source]

        # 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

### Public Instance methods

<=>(o)

Compare two presences using priority (with cmp_interest as fall-back).

[Source]

         # 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

cmp_interest(o)

[Source]

         # 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

priority()

Get presence priority, or nil if absent

result: | [Integer]

[Source]

         # File lib/xmpp4r/presence.rb, line 163
    163:     def priority
    164:        e = first_element_text('priority')
    165:       if e
    166:         return e.to_i
    167:       else
    168:         return nil
    169:       end
    170:     end

priority=(val)

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.)

[Source]

         # 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

set_priority(val)

Set presence priority (chaining-friendly)

val: | [Integer] Priority value between -128 and +127

[Source]

         # File lib/xmpp4r/presence.rb, line 189
    189:     def set_priority(val)
    190:       self.priority = val
    191:       self
    192:     end

set_show(val)

Set Availability Status (chaining-friendly)

val: | [Symbol] or [Nil] See show for explanation

[Source]

         # File lib/xmpp4r/presence.rb, line 129
    129:     def set_show(val)
    130:       self.show = val
    131:       self
    132:     end

set_status(val)

Set status message (chaining-friendly)

val: | [String] or nil

[Source]

         # File lib/xmpp4r/presence.rb, line 155
    155:     def set_status(val)
    156:       self.status = val
    157:       self
    158:     end

set_type(val)

Set type of presence (chaining-friendly)

val: | [Symbol] See type for possible subscription types

[Source]

        # File lib/xmpp4r/presence.rb, line 76
    76:     def set_type(val)
    77:       self.type = val
    78:       self
    79:     end

show()

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)

[Source]

        # 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

show=(val)

Set Availability Status

val: | [Symbol] or [Nil] See show for explanation

[Source]

         # 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

status()

Get status message

result: | [String] or nil

[Source]

         # File lib/xmpp4r/presence.rb, line 137
    137:     def status
    138:       first_element_text('status')
    139:     end

status=(val)

Set status message

val: | [String] or nil

[Source]

         # File lib/xmpp4r/presence.rb, line 144
    144:     def status=(val)
    145:       if val.nil?
    146:         delete_element('status')
    147:       else
    148:         replace_element_text('status', val)
    149:       end
    150:     end

type()

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.

[Source]

        # 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

type=(val)

Set type of presence

val: | [Symbol] See type for possible subscription types

[Source]

        # 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

[Validate]