| 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.new(session_id + password).hexdigest))
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