Class: Jabber::Protocol::Iq
- Inherits:
-
Object
- Object
- Jabber::Protocol::Iq
- Defined in:
- lib/jabber4r/protocol.rb
Overview
A class used to build/parse IQ requests/responses
Constant Summary collapse
- ERROR =
"error"
- GET =
"get"
- SET =
"set"
- RESULT =
"result"
Instance Attribute Summary collapse
-
#data ⇒ Object
Returns the value of attribute data.
-
#error ⇒ Object
Returns the value of attribute error.
-
#errorcode ⇒ Object
Returns the value of attribute errorcode.
-
#from ⇒ Object
Returns the value of attribute from.
-
#id ⇒ Object
Returns the value of attribute id.
-
#session ⇒ Object
Returns the value of attribute session.
-
#to ⇒ Object
Returns the value of attribute to.
-
#type ⇒ Object
Returns the value of attribute type.
-
#xmlns ⇒ Object
Returns the value of attribute xmlns.
Class Method Summary collapse
-
.from_element(session, element) ⇒ Object
Factory to build an IQ object from xml element.
-
.gen_add_rosteritem(session, id, jid, name) ⇒ Object
Generates an IQ Roster Item add request XML element.
-
.gen_auth(session, id, username, password, resource) ⇒ Object
Generates an IQ authortization request XML element.
-
.gen_auth_digest(session, id, username, digest, resource) ⇒ Object
Generates an IQ digest authortization request XML element.
-
.gen_oob(session, to, url, desc = "") ⇒ Object
Generates an IQ out of bounds XML element.
-
.gen_registration(session, id, username, password, email, name) ⇒ Object
Generates an IQ authortization request XML element.
-
.gen_roster(session, id) ⇒ Object
Generates an IQ roster request XML element.
-
.gen_vcard(session, id, to) ⇒ Object
Generates an VCard request XML element.
-
.get_private(session, id, ename, ns) ⇒ Object
Return an IQ object that uses the jabber:iq:private namespace.
Instance Method Summary collapse
-
#initialize(session, id = nil) ⇒ Iq
constructor
- Default constructor to build an Iq object session
- Jabber::Session
- The Jabber session instance id
- String=nil
-
The (optional) id of the Iq object.
-
#reply ⇒ Object
Builds a reply to an existing Iq.
-
#send(wait = false, &block) ⇒ Object
Sends the IQ to the Jabber service for delivery.
-
#to_s ⇒ Object
see to_xml.
-
#to_xml ⇒ Object
Generates XML that complies with the Jabber protocol for sending the Iq through the Jabber service.
Constructor Details
#initialize(session, id = nil) ⇒ Iq
Default constructor to build an Iq object
- session
- Jabber::Session
-
The Jabber session instance
- id
- String=nil
-
The (optional) id of the Iq object
423 424 425 426 |
# File 'lib/jabber4r/protocol.rb', line 423 def initialize(session,id=nil) @session=session @id=id end |
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
394 395 396 |
# File 'lib/jabber4r/protocol.rb', line 394 def data @data end |
#error ⇒ Object
Returns the value of attribute error.
394 395 396 |
# File 'lib/jabber4r/protocol.rb', line 394 def error @error end |
#errorcode ⇒ Object
Returns the value of attribute errorcode.
394 395 396 |
# File 'lib/jabber4r/protocol.rb', line 394 def errorcode @errorcode end |
#from ⇒ Object
Returns the value of attribute from.
394 395 396 |
# File 'lib/jabber4r/protocol.rb', line 394 def from @from end |
#id ⇒ Object
Returns the value of attribute id.
394 395 396 |
# File 'lib/jabber4r/protocol.rb', line 394 def id @id end |
#session ⇒ Object
Returns the value of attribute session.
394 395 396 |
# File 'lib/jabber4r/protocol.rb', line 394 def session @session end |
#to ⇒ Object
Returns the value of attribute to.
394 395 396 |
# File 'lib/jabber4r/protocol.rb', line 394 def to @to end |
#type ⇒ Object
Returns the value of attribute type.
394 395 396 |
# File 'lib/jabber4r/protocol.rb', line 394 def type @type end |
#xmlns ⇒ Object
Returns the value of attribute xmlns.
394 395 396 |
# File 'lib/jabber4r/protocol.rb', line 394 def xmlns @xmlns end |
Class Method Details
.from_element(session, element) ⇒ Object
Factory to build an IQ object from xml element
- session
- Jabber::Session
-
The Jabber session instance
- element
- Jabber::Protocol::ParsedXMLElement
-
The received XML object
- return
- Jabber::Protocol::Iq
-
The newly created Iq object
407 408 409 410 411 412 413 414 415 416 417 |
# File 'lib/jabber4r/protocol.rb', line 407 def Iq.from_element(session, element) iq = Iq.new(session) iq.from = Jabber::JID.new(element.attr_from) if element.attr_from iq.to = Jabber::JID.new(element.attr_to) if element.attr_to iq.type = element.attr_type iq.id = element.attr_id iq.session=session iq.xmlns=element.query.attr_xmlns iq.data=element.query return iq end |
.gen_add_rosteritem(session, id, jid, name) ⇒ Object
Generates an IQ Roster Item add request XML element
- session
- Session
-
The session
- id
- String
-
The message id
- jid
- JID
-
The Jabber ID to add to the roster
- name
- String
-
The full name
- return
- String
-
The XML data to send
484 485 486 487 488 489 490 |
# File 'lib/jabber4r/protocol.rb', line 484 def Iq.gen_add_rosteritem(session, id, jid, name) iq = Iq.new(session, id) iq.type = "set" iq.xmlns = "jabber:iq:roster" iq.data = XMLElement.new("item").add_attribute("jid", jid).add_attribute("name", name).to_s return iq end |
.gen_auth(session, id, username, password, resource) ⇒ Object
Generates an IQ authortization request XML element
- id
- String
-
The message id
- username
- String
-
The username
- password
- String
-
The password
- resource
- String
-
The resource to bind this session to
- return
- String
-
The XML data to send
501 502 503 504 505 506 507 508 509 510 |
# File 'lib/jabber4r/protocol.rb', line 501 def Iq.gen_auth(session, id, username, password, resource) iq = Iq.new(session, id) iq.type = "set" iq.xmlns = "jabber:iq:auth" iq.data = XMLElement.new("username").add_data(username).to_s iq.data << XMLElement.new("password").add_data(password).to_s iq.data << XMLElement.new("resource").add_data(resource).to_s return iq #element = XMLElement.new("iq", {"type"=>"set", "id"=>id}).add_child("query", {"xmlns"=>"jabber:iq:auth"}).add_child("username").add_data(username).to_parent.add_child("password").add_data(password).to_parent.add_child("resource").add_data(resource).to_parent.to_s end |
.gen_auth_digest(session, id, username, digest, resource) ⇒ Object
Generates an IQ digest authortization request XML element
- id
- String
-
The message id
- username
- String
-
The username
- digest
- String
-
The SHA-1 hash of the sessionid and the password
- resource
- String
-
The resource to bind this session to
- return
- String
-
The XML data to send
521 522 523 524 525 526 527 528 529 530 |
# File 'lib/jabber4r/protocol.rb', line 521 def Iq.gen_auth_digest(session, id, username, digest, resource) iq = Iq.new(session, id) iq.type = "set" iq.xmlns = "jabber:iq:auth" iq.data = XMLElement.new("username").add_data(username).to_s iq.data << XMLElement.new("digest").add_data(digest).to_s iq.data << XMLElement.new("resource").add_data(resource).to_s return iq #return XMLElement.new("iq", {"type"=>"set", "id"=>id}).add_child("query", {"xmlns"=>"jabber:iq:auth"}).add_child("username").add_data(username).to_parent.add_child("digest").add_data(digest).to_parent.add_child("resource").add_data(resource).to_parent.to_s end |
.gen_oob(session, to, url, desc = "") ⇒ Object
Generates an IQ out of bounds XML element
- to
- JID
-
The Jabber ID to send to
- url
- String
-
The data to send
- desc
- String=“”
-
The description of the data
- return
- String
-
The XML data to send
540 541 542 543 544 545 546 547 548 |
# File 'lib/jabber4r/protocol.rb', line 540 def Iq.gen_oob(session, to, url, desc="") iq = Iq.new(session, nil) iq.type = "set" iq.xmlns = "jabber:iq:oob" iq.data = XMLElement.new("url").add_data(url).to_s iq.data << XMLElement.new("desc").add_data(desc).to_s return iq #return XMLElement.new("iq", {"type"=>"set"}).add_child("query", {"xmlns"=>"jabber:iq:oob"}).add_child("url").add_data(url).to_parent.add_child("desc").add_data(data).to_parent.to_s end |
.gen_registration(session, id, username, password, email, name) ⇒ Object
Generates an IQ authortization request XML element
- id
- String
-
The message id
- username
- String
-
The username
- password
- String
-
The password
- String
-
The email address of the account
- name
- String
-
The full name
- return
- String
-
The XML data to send
464 465 466 467 468 469 470 471 472 473 |
# File 'lib/jabber4r/protocol.rb', line 464 def Iq.gen_registration(session, id, username, password, email, name) iq = Iq.new(session, id) iq.type = "set" iq.xmlns = "jabber:iq:register" iq.data = XMLElement.new("username").add_data(username).to_s iq.data << XMLElement.new("password").add_data(password).to_s iq.data << XMLElement.new("email").add_data(email).to_s iq.data << XMLElement.new("name").add_data(name).to_s return iq end |
.gen_roster(session, id) ⇒ Object
Generates an IQ roster request XML element
- id
- String
-
The message id
- return
- String
-
The XML data to send
446 447 448 449 450 451 452 |
# File 'lib/jabber4r/protocol.rb', line 446 def Iq.gen_roster(session, id) iq = Iq.new(session, id) iq.type = "get" iq.xmlns = "jabber:iq:roster" return iq #return XMLElement.new("iq", {"type"=>"get", "id"=>id}).add_child("query", {"xmlns"=>"jabber:iq:roster"}).to_s end |
.gen_vcard(session, id, to) ⇒ Object
Generates an VCard request XML element
- id
- String
-
The message ID
- to
- JID
-
The jabber id of the account to get the VCard for
- return
- String
-
The XML data to send
557 558 559 560 561 562 563 564 |
# File 'lib/jabber4r/protocol.rb', line 557 def Iq.gen_vcard(session, id, to) iq = Iq.new(session, id) iq.xmlns = "vcard-temp" iq.type = "get" iq.to = to return iq #return XMLElement.new("iq", {"type"=>"get", "id"=>id, "to"=>to}).add_child("query", {"xmlns"=>"vcard-temp"}).to_s end |
.get_private(session, id, ename, ns) ⇒ Object
Return an IQ object that uses the jabber:iq:private namespace
431 432 433 434 435 436 437 |
# File 'lib/jabber4r/protocol.rb', line 431 def Iq.get_private(session,id,ename,ns) iq=Iq.new(session,id) iq.type="get" iq.xmlns="jabber:iq:private" iq.data=XMLElement.new(ename,{'xmlns' => ns}); return iq end |
Instance Method Details
#reply ⇒ Object
Builds a reply to an existing Iq
- return
- Jabber::Protocol::Iq
-
The result Iq
598 599 600 601 602 603 604 605 |
# File 'lib/jabber4r/protocol.rb', line 598 def reply iq = Iq.new(@session,@id) iq.to = @from iq.id = @id iq.type = 'result' @is_reply = true return iq end |
#send(wait = false, &block) ⇒ Object
Sends the IQ to the Jabber service for delivery
- wait
- Boolean = false
-
Wait for reply before return?
- &block
- Block
-
A block to process the message replies
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 |
# File 'lib/jabber4r/protocol.rb', line 575 def send(wait=false, &block) if wait iq = nil blockedThread = Thread.current @session.connection.send(self.to_s, block) do |je| if je.element_tag == "iq" and je.attr_id == @id je.consume_element iq = Iq.from_element(@session, je) blockedThread.wakeup end end Thread.stop rturn iq else @session.connection.send(self.to_s, block) if @session end end |
#to_s ⇒ Object
see to_xml
629 630 631 |
# File 'lib/jabber4r/protocol.rb', line 629 def to_s to_xml end |
#to_xml ⇒ Object
Generates XML that complies with the Jabber protocol for sending the Iq through the Jabber service.
- return
- String
-
The XML string.
613 614 615 616 617 618 619 620 621 622 623 624 |
# File 'lib/jabber4r/protocol.rb', line 613 def to_xml elem = XMLElement.new("iq", { "type"=>@type}) elem.add_attribute("to" ,@to) if @to elem.add_attribute("id", @id) if @id elem.add_child("query").add_attribute("xmlns",@xmlns).add_data(@data.to_s) if @type=="error" then e=elem.add_child("error"); e.add_attribute("code",@errorcode) if @errorcode e.add_data(@error) if @error end return elem.to_s end |