Class Jabber::Presence
In: lib/xmpp4r/presence.rb
Parent: XMPPStanza
Message Presence XMPPStanza Iq Singleton IdGenerator XMPPElement X IqQuery Error Connection Client Component Client Comparable JID RuntimeError AuthenticationFailure ErrorException NoNameXmlnsRegistered SOCKS5Error REXML::Element Stream SOCKS5Bytestreams SOCKS5BytestreamsTarget SOCKS5BytestreamsInitiator XMPPElement StreamHost IqSiFileRange IqSiFile StreamHostUsed IqSi XRosterItem RosterItem IqFeature XMUCUserItem XMUCUserInvite IqPubSub Items Item Event Feature Item Identity XDataField XDataReported XDataTitle XDataInstructions IqVcard SOCKS5BytestreamsServerStreamHost TCPSocket SOCKS5Socket IqQuery IqQueryBytestreams IqQueryVersion IqQueryRoster IqQueryMUCOwner IqQueryRPC IqQueryDiscoItems IqQueryDiscoInfo IBB IBBTarget IBBInitiator Responder SimpleResponder Iq IqCommand RosterXItem XRoster RosterX X XMUCUser XMUC XDelay XData XParent MUCClient SimpleMUCClient XMLRPC::ParserWriterChooseMixin Client Server XMLRPC::ParseContentType XMLRPC::BasicServer Base DigestMD5 Plain ServiceHelper NodeHelper FileSource CallbackList Callback Semaphore StreamParser SOCKS5BytestreamsPeer SOCKS5BytestreamsServer IBBQueueItem Responder Helper MUCBrowser NodeBrowser Helper Helper lib/xmpp4r/authenticationfailure.rb lib/xmpp4r/xmppstanza.rb lib/xmpp4r/callbacks.rb lib/xmpp4r/idgenerator.rb lib/xmpp4r/connection.rb lib/xmpp4r/iq.rb lib/xmpp4r/jid.rb lib/xmpp4r/errorexception.rb lib/xmpp4r/client.rb lib/xmpp4r/stream.rb lib/xmpp4r/semaphore.rb lib/xmpp4r/streamparser.rb lib/xmpp4r/x.rb lib/xmpp4r/error.rb lib/xmpp4r/component.rb lib/xmpp4r/query.rb lib/xmpp4r/xmppelement.rb lib/xmpp4r/message.rb lib/xmpp4r/presence.rb lib/xmpp4r/bytestreams/helper/ibb/initiator.rb lib/xmpp4r/bytestreams/iq/si.rb lib/xmpp4r/bytestreams/iq/bytestreams.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb lib/xmpp4r/bytestreams/helper/ibb/base.rb lib/xmpp4r/bytestreams/helper/ibb/target.rb Bytestreams XParent lib/xmpp4r/version/iq/version.rb lib/xmpp4r/version/helper/responder.rb lib/xmpp4r/version/helper/simpleresponder.rb Version lib/xmpp4r/command/iq/command.rb lib/xmpp4r/command/helper/responder.rb Command lib/xmpp4r/roster/helper/roster.rb lib/xmpp4r/roster/iq/roster.rb lib/xmpp4r/roster/x/roster.rb Roster lib/xmpp4r/feature_negotiation/iq/feature.rb FeatureNegotiation lib/xmpp4r/muc/x/muc.rb lib/xmpp4r/muc/helper/mucclient.rb lib/xmpp4r/muc/x/mucuseritem.rb lib/xmpp4r/muc/helper/mucbrowser.rb lib/xmpp4r/muc/x/mucuserinvite.rb lib/xmpp4r/muc/iq/mucowner.rb lib/xmpp4r/muc/helper/simplemucclient.rb MUC lib/xmpp4r/rpc/helper/server.rb lib/xmpp4r/rpc/helper/client.rb lib/xmpp4r/rpc/iq/rpc.rb RPC lib/xmpp4r/sasl.rb SASL lib/xmpp4r/delay/x/delay.rb Delay lib/xmpp4r/pubsub/helper/servicehelper.rb lib/xmpp4r/pubsub/stanzas/item.rb lib/xmpp4r/pubsub/helper/nodehelper.rb lib/xmpp4r/pubsub/iq/pubsub.rb lib/xmpp4r/pubsub/stanzas/event.rb lib/xmpp4r/pubsub/helper/nodebrowser.rb lib/xmpp4r/pubsub/stanzas/items.rb PubSub lib/xmpp4r/httpbinding/client.rb HTTPBinding lib/xmpp4r/bytestreams/helper/filetransfer.rb TransferSource FileTransfer lib/xmpp4r/discovery/iq/discoinfo.rb lib/xmpp4r/discovery/iq/discoitems.rb Discovery lib/xmpp4r/dataforms/x/data.rb Dataforms lib/xmpp4r/vcard/helper/vcard.rb lib/xmpp4r/vcard/iq/vcard.rb Vcard Jabber dot/m_79_0.png

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

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

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

[Source]

     # File lib/xmpp4r/presence.rb, line 196
196:     def <=>(o)
197:       if priority.to_i == o.priority.to_i
198:         cmp_interest(o)
199:       else
200:         priority.to_i <=> o.priority.to_i
201:       end
202:     end

[Source]

     # File lib/xmpp4r/presence.rb, line 214
214:     def cmp_interest(o)
215:       if type.nil?
216:         if o.type.nil?
217:           # both available.
218:           PRESENCE_STATUS[show] <=> PRESENCE_STATUS[o.show]
219:         else
220:           return -1
221:         end
222:       elsif o.type.nil?
223:         return 1
224:       else
225:         # both are non-nil. We consider this is equal.
226:         return 0
227:       end
228:     end

Get presence priority, or nil if absent

result:[Integer]

[Source]

     # File lib/xmpp4r/presence.rb, line 162
162:     def priority
163:        e = first_element_text('priority')
164:       if e
165:         return e.to_i
166:       else
167:         return nil
168:       end
169:     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.)

[Source]

     # File lib/xmpp4r/presence.rb, line 177
177:     def priority=(val)
178:       if val.nil?
179:         delete_element('priority')
180:       else
181:         replace_element_text('priority', val)
182:       end
183:     end

Set presence priority (chaining-friendly)

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

[Source]

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

Set Availability Status (chaining-friendly)

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

[Source]

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

Set status message (chaining-friendly)

val:[String] or nil

[Source]

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

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

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

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 :away then text = 'away'
111:         when :chat then text = 'chat'
112:         when :dnd then text = 'dnd'
113:         when :xa then text = 'xa'
114:         when nil then text = nil
115:         else raise "Invalid value for show."
116:       end
117: 
118:       if text.nil?
119:         delete_element(xe)
120:       else
121:         xe.text = text
122:       end
123:     end

Get status message

result:[String] or nil

[Source]

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

Set status message

val:[String] or nil

[Source]

     # File lib/xmpp4r/presence.rb, line 143
143:     def status=(val)
144:       if val.nil?
145:         delete_element('status')
146:       else
147:         replace_element_text('status', val)
148:       end
149:     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.

[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

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]