Class Jabber::Presence
In: lib/xmpp4r/presence.rb
Parent: XMPPStanza
Message Presence XMPPStanza Iq XMPPElement ErrorResponse X IqQuery JabberError ComponentAuthenticationFailure ArgumentError InvalidChatState SOCKS5Error ServerError NoNameXmlnsRegistered ServerDisconnected ClientAuthenticationFailure Connection Client Component Connection Client Singleton IdGenerator Comparable JID Enumerable CallbackList Items Publish StandardError REXML::Element Stream XMPPElement Location IqFeature StreamHost IqSiFile IqSiFileRange IqSi StreamHostUsed XRosterItem RosterItem C Body HTML UserItem XMUCUserInvite Configuration Retract IqPubSub Item IqPubSubOwner Event Subscription Unsubscribe Tune XDataField XDataReported XDataTitle XDataInstructions Feature Item Identity IqVcard PubSub::ServiceHelper Helper Helper SOCKS5Bytestreams SOCKS5BytestreamsTarget SOCKS5BytestreamsInitiator SOCKS5BytestreamsServerStreamHost TCPSocket SOCKS5Socket IqQuery IqQueryBytestreams IqQueryRoster IqQueryVersion IqQueryRPC IqQueryMUCOwner IqQueryMUCAdmin IqQueryDiscoItems IqQueryDiscoInfo IqQueryLastActivity IBB IBBTarget IBBInitiator RosterXItem XRoster RosterX X XDelay XMUC XMUCUser XData Responder SimpleResponder Iq IqCommand XMLRPC::ParserWriterChooseMixin Client Server XMLRPC::ParseContentType XMLRPC::BasicServer MUCClient SimpleMUCClient MUC::UserItem XMUCUserItem IqQueryMUCAdminItem XParent SubscriptionConfig NodeConfig OwnerNodeConfig EventItems ServiceHelper OAuthServiceHelper NodeHelper EventItem Base Anonymous DigestMD5 Plain FileSource Base Bot Callback StreamParser Semaphore SOCKS5BytestreamsPeer SOCKS5BytestreamsServer IBBQueueItem Helper Responder Helper Listener MUCBrowser NodeBrowser ListenerMocker Helper Responder Helper Helper Helper lib/xmpp4r/message.rb lib/xmpp4r/connection.rb lib/xmpp4r/xmppstanza.rb lib/xmpp4r/iq.rb lib/xmpp4r/callbacks.rb lib/xmpp4r/idgenerator.rb lib/xmpp4r/stream.rb lib/xmpp4r/client.rb lib/xmpp4r/jid.rb lib/xmpp4r/x.rb lib/xmpp4r/streamparser.rb lib/xmpp4r/semaphore.rb lib/xmpp4r/errors.rb lib/xmpp4r/component.rb lib/xmpp4r/presence.rb lib/xmpp4r/xmppelement.rb lib/xmpp4r/query.rb XParent lib/xmpp4r/location/helper/helper.rb lib/xmpp4r/location/location.rb UserLocation lib/xmpp4r/feature_negotiation/iq/feature.rb FeatureNegotiation lib/xmpp4r/bytestreams/iq/si.rb lib/xmpp4r/bytestreams/helper/ibb/initiator.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb lib/xmpp4r/bytestreams/iq/bytestreams.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb lib/xmpp4r/bytestreams/helper/ibb/target.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb lib/xmpp4r/bytestreams/helper/ibb/base.rb Bytestreams lib/xmpp4r/roster/x/roster.rb lib/xmpp4r/roster/helper/roster.rb lib/xmpp4r/roster/iq/roster.rb Roster lib/xmpp4r/version/helper/responder.rb lib/xmpp4r/version/helper/simpleresponder.rb lib/xmpp4r/version/iq/version.rb Version lib/xmpp4r/command/iq/command.rb lib/xmpp4r/command/helper/responder.rb Command lib/xmpp4r/caps/helper/helper.rb lib/xmpp4r/caps/c.rb Caps lib/xmpp4r/reliable.rb Reliable lib/xmpp4r/delay/x/delay.rb Delay lib/xmpp4r/xhtml/html.rb XHTML lib/xmpp4r/rpc/helper/server.rb lib/xmpp4r/rpc/helper/client.rb lib/xmpp4r/rpc/iq/rpc.rb RPC lib/xmpp4r/muc/iq/mucadminitem.rb lib/xmpp4r/muc/x/muc.rb lib/xmpp4r/muc/item.rb lib/xmpp4r/muc/helper/simplemucclient.rb lib/xmpp4r/muc/iq/mucadmin.rb lib/xmpp4r/muc/helper/mucbrowser.rb lib/xmpp4r/muc/x/mucuseritem.rb lib/xmpp4r/muc/x/mucuserinvite.rb lib/xmpp4r/muc/iq/mucowner.rb lib/xmpp4r/muc/helper/mucclient.rb MUC lib/xmpp4r/pubsub/children/item.rb lib/xmpp4r/pubsub/children/configuration.rb lib/xmpp4r/pubsub/children/subscription.rb lib/xmpp4r/pubsub/helper/servicehelper.rb lib/xmpp4r/pubsub/children/unsubscribe.rb lib/xmpp4r/pubsub/children/publish.rb lib/xmpp4r/pubsub/helper/oauth_service_helper.rb lib/xmpp4r/pubsub/children/event.rb lib/xmpp4r/pubsub/iq/pubsub.rb lib/xmpp4r/pubsub/children/retract.rb lib/xmpp4r/pubsub/helper/nodebrowser.rb lib/xmpp4r/pubsub/helper/nodehelper.rb lib/xmpp4r/pubsub/children/items.rb lib/xmpp4r/pubsub/children/subscription_config.rb lib/xmpp4r/pubsub/children/node_config.rb OAuthPubSubStreamHelper PubSub lib/xmpp4r/httpbinding/client.rb HTTPBinding lib/xmpp4r/tune/helper/helper.rb lib/xmpp4r/tune/tune.rb UserTune lib/xmpp4r/sasl.rb SASL lib/xmpp4r/test/listener_mocker.rb Test lib/xmpp4r/dataforms/x/data.rb Dataforms lib/xmpp4r/discovery/helper/helper.rb lib/xmpp4r/discovery/iq/discoinfo.rb lib/xmpp4r/discovery/helper/responder.rb lib/xmpp4r/discovery/iq/discoitems.rb Discovery lib/xmpp4r/bytestreams/helper/filetransfer.rb TransferSource FileTransfer lib/xmpp4r/last/helper/helper.rb lib/xmpp4r/last/iq/last.rb LastActivity lib/xmpp4r/framework/base.rb lib/xmpp4r/framework/bot.rb Framework lib/xmpp4r/vcard/helper/vcard.rb lib/xmpp4r/vcard/iq/vcard.rb Vcard Jabber dot/m_110_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:[Symbol] Initial Availability Status (see show)
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 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

[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

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

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 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 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 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 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 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 status message

result:[String] or nil

[Source]

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

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

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]