Class | Jabber::Iq |
In: |
lib/xmpp4r/iq.rb
|
Parent: | XMLStanza |
IQ: Information/Query (see RFC3920 - 9.2.3
A class used to build/parse IQ requests/responses
Add a class by name. Elements with this name will be automatically converted to the specific class. Used for <query/>, <vCard>, <pubsub> etc.
name: | [String] Element name |
elementclass: | [Class] Target class |
# File lib/xmpp4r/iq.rb, line 218 218: def Iq.add_elementclass(name, elementclass) 219: @@element_classes[name] = elementclass 220: end
Create a new iq from a stanza, copies all attributes and children from xmlstanza
xmlstanza: | [REXML::Element] Source stanza |
return: | [Iq] New stanza |
# File lib/xmpp4r/iq.rb, line 112 112: def Iq.import(xmlstanza) 113: Iq::new.import(xmlstanza) 114: end
Create a new jabber:iq:auth set Stanza.
# File lib/xmpp4r/iq.rb, line 141 141: def Iq.new_authset(jid, password) 142: iq = Iq::new(:set) 143: query = IqQuery::new 144: query.add_namespace('jabber:iq:auth') 145: query.add(REXML::Element::new('username').add_text(jid.node)) 146: query.add(REXML::Element::new('password').add_text(password)) 147: query.add(REXML::Element::new('resource').add_text(jid.resource)) if not jid.resource.nil? 148: iq.add(query) 149: iq 150: end
Create a new jabber:iq:auth set Stanza for Digest authentication
# File lib/xmpp4r/iq.rb, line 154 154: def Iq.new_authset_digest(jid, session_id, password) 155: iq = Iq::new(:set) 156: query = IqQuery::new 157: query.add_namespace('jabber:iq:auth') 158: query.add(REXML::Element::new('username').add_text(jid.node)) 159: query.add(REXML::Element::new('digest').add_text(Digest::SHA1.hexdigest(session_id + password))) 160: query.add(REXML::Element::new('resource').add_text(jid.resource)) if not jid.resource.nil? 161: iq.add(query) 162: iq 163: end
Create a new jabber:iq:register set stanza for service/server registration
username: | [String] (Element will be ommited if unset) |
password: | [String] (Element will be ommited if unset) |
# File lib/xmpp4r/iq.rb, line 169 169: def Iq.new_register(username=nil, password=nil) 170: iq = Iq::new(:set) 171: query = IqQuery::new 172: query.add_namespace('jabber:iq:register') 173: query.add(REXML::Element::new('username').add_text(username)) if username 174: query.add(REXML::Element::new('password').add_text(password)) if password 175: iq.add(query) 176: iq 177: end
Create a new jabber:iq:roster get Stanza.
IqQueryRoster is unused here because possibly not require‘d
# File lib/xmpp4r/iq.rb, line 183 183: def Iq.new_rosterget 184: iq = Iq::new(:get) 185: query = IqQuery::new 186: query.add_namespace('jabber:iq:roster') 187: iq.add(query) 188: iq 189: end
Delete old elements named newquery.name
newquery: | [REXML::Element] will be added |
# File lib/xmpp4r/iq.rb, line 83 83: def query=(newquery) 84: delete_elements(newquery.name) 85: add(newquery) 86: end
The following values are allowed:
result: | [Symbol] or nil |
# File lib/xmpp4r/iq.rb, line 41 41: def type 42: case super 43: when 'get' then :get 44: when 'set' then :set 45: when 'result' then :result 46: when 'error' then :error 47: else nil 48: end 49: end
Add an element to the Iq stanza
element: | [REXML::Element] Element to add. |
Will be automatically converted (imported) to a class registered with add_elementclass
# File lib/xmpp4r/iq.rb, line 121 121: def typed_add(element) 122: if element.kind_of?(REXML::Element) && @@element_classes.has_key?(element.name) 123: super(@@element_classes[element.name]::import(element)) 124: else 125: super(element) 126: end 127: end