Class: Blather::Stanza::Presence::Status

Inherits:
Blather::Stanza::Presence show all
Includes:
InstanceMethods, Comparable
Defined in:
lib/blather/stanza/presence/status.rb

Overview

# Status Stanza

[RFC 3921 Section 2.2.2 - Presence Child Elements](xmpp.org/rfcs/rfc3921.html#rfc.section.2.2.2)

Presence stanzas are used to express an entity’s current network availability (offline or online, along with various sub-states of the latter and optional user-defined descriptive text), and to notify other entities of that availability.

## “State” Attribute

The state attribute determains the availability of the entity and can be one of the following:

  • :available – The entity or resource is available

  • :away – The entity or resource is temporarily away.

  • :chat – The entity or resource is actively interested in chatting.

  • :dnd – The entity or resource is busy (dnd = “Do Not Disturb”).

  • :xa – The entity or resource is away for an extended period (xa = “eXtended Away”).

Blather provides a helper for each possible state:

Status#available?
Status#away?
Status#chat?
Status#dnd?
Status#xa?

Blather treats the type attribute like a normal ruby object attribute providing a getter and setter. The default type is available.

status = Status.new
status.state              # => :available
status.available?         # => true
status.state = :away
status.away?              # => true
status.available?         # => false
status
status.state = :invalid   # => RuntimeError

## “Type” Attribute

The type attribute is inherited from Presence, but limits the value to either nil or :unavailable as these are the only types that relate to Status.

## “Priority” Attribute

The priority attribute sets the priority of the status for the entity and must be an integer between -128 and 127.

## “Message” Attribute

The optional message element contains XML character data specifying a natural-language description of availability status. It is normally used in conjunction with the show element to provide a detailed description of an availability state (e.g., “In a meeting”).

Blather treats the message attribute like a normal ruby object attribute providing a getter and setter. The default message is nil.

status = Status.new
status.message            # => nil
status.message = "gone!"
status.message            # => "gone!"

Direct Known Subclasses

MUC

Defined Under Namespace

Modules: InstanceMethods

Constant Summary collapse

VALID_STATES =

The spec requires only the following 4 states

[:away, :chat, :dnd, :xa].freeze
VALID_TYPES =
[:unavailable].freeze
POSSIBLE_STATES =

…but this is the sorted list of possible states

[:unavailable, :dnd, :xa, :away, :available, :chat].freeze

Constants inherited from XMPPNode

XMPPNode::BASE_NAMES

Instance Attribute Summary

Attributes inherited from Blather::Stanza

#handler_hierarchy

Class Method Summary collapse

Methods included from InstanceMethods

#<=>, #available?, #away?, #chat?, #dnd?, #message, #message=, #priority, #priority=, #state, #state=, #xa?

Methods inherited from Blather::Stanza::Presence

#error?, import, #probe?, #subscribe?, #subscribed?, #type=, #unavailable?, #unsubscribe?, #unsubscribed?

Methods inherited from Blather::Stanza

#as_error, #error?, #from, #from=, handler_list, #id, #id=, #initialize, next_id, register, #reply, #reply!, #to, #to=, #type, #type=

Methods inherited from XMPPNode

class_from_registration, #decorate, decorator_modules, import, parse, register, #to_stanza

Constructor Details

This class inherits a constructor from Blather::Stanza

Class Method Details

.new(state = nil, message = nil) ⇒ Object

Create a new Status stanza



94
95
96
97
98
99
# File 'lib/blather/stanza/presence/status.rb', line 94

def self.new(state = nil, message = nil)
  node = super()
  node.state = state
  node.message = message
  node
end