# =XMPP4R - XMPP Library for Ruby # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option. # Website::http://home.gna.org/xmpp4r/ require 'xmpp4r/muc/x/mucuseritem' require 'xmpp4r/muc/x/mucuserinvite' module Jabber module MUC ## # Class for elements # with namespace http://jabber.org/protocol/muc # # See JEP-0045 for details class XMUC < X ## # Initialize an element # and set namespace to http://jabber.org/protocol/muc def initialize super add_namespace('http://jabber.org/protocol/muc') end ## # Text content of the element def password first_element_text('password') end ## # Set the password for joining a room # (text content of the element) def password=(s) if s replace_element_text('password', s) else delete_elements('password') end end end ## # Class for elements # with namespace http://jabber.org/protocol/muc#user # # See JEP-0058 for details class XMUCUser < X ## # Initialize an element # and set namespace to http://jabber.org/protocol/muc#user def initialize super add_namespace('http://jabber.org/protocol/muc#user') end ## # Add a children element, # will be imported to [XMUCUserItem] if name is "item" def typed_add(element) if element.kind_of?(REXML::Element) && (element.name == 'item') super(XMUCUserItem::new.import(element)) elsif element.kind_of?(REXML::Element) && (element.name == 'invite') super(XMUCUserInvite::new.import(element)) else super(element) end end ## # Retrieve the three-digit code in # # result:: [Fixnum] or nil def status_code e = nil each_element('status') { |xe| e = xe } if e and e.attributes['code'].size == 3 and e.attributes['code'].to_i != 0 e.attributes['code'].to_i else nil end end ## # Get all elements # result:: [Array] of [XMUCUserItem] def items res = [] each_element('item') { |item| res << item } res end end X.add_namespaceclass('http://jabber.org/protocol/muc', XMUC) X.add_namespaceclass('http://jabber.org/protocol/muc#user', XMUCUser) end end