Net::XMPP::IQ.3pm

Langue: en

Version: 2008-11-06 (ubuntu - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

Net::XMPP::IQ - XMPP Info/Query Module

SYNOPSIS

   Net::XMPP::IQ is a companion to the Net::XMPP module. It
   provides the user a simple interface to set and retrieve all
   parts of an XMPP IQ.
 
 

DESCRIPTION

   Net::XMPP::IQ differs from the other Net::XMPP::* modules in that
   the XMLNS of the query is split out into a submodule under
   IQ.  For specifics on each module please view the documentation
   for the Net::XMPP::Namespaces module.
 
   A Net::XMPP::IQ object is passed to the callback function for the
   message.  Also, the first argument to the callback functions is the
   session ID from XML::Stream.  There are some cases where you might
   want this information, like if you created a Client that connects to
   two servers at once, or for writing a mini server.
 
     use Net::XMPP;
 
     sub iq {
       my ($sid,$IQ) = @_;
       .
       .
       my $reply = $IQ->Reply();
       my $replyQuery->GetQuery();
       .
     }
 
   You now have access to all of the retrieval functions available.
 
   To create a new iq to send to the server:
 
     use Net::XMPP;
 
     $IQ = new Net::XMPP::IQ();
     $IQType = $IQ->NewChild( type );
     $IQType->SetXXXXX("yyyyy");
 
   Now you can call the creation functions for the IQ, and for the
   <query/> on the new query object itself.  See below for the <iq/>
   functions, and in each query module for those functions.
 
 

METHODS

General functions

   Reply(%args) - Creates a return <iq/> with the to and from
                  filled in correctly, and a query object already
                  added in.  The %args that you pass are passed
                  to SetIQ() and will overwrite the IQ settings
                  that Reply sets.
 
 

Retrieval functions

   GetTo()      - returns either a string with the JID, or a
   GetTo("jid")   Net::XMPP::JID object for the person who is
                  going to receive the <iq/>.  To get the JID
                  object set the string to "jid", otherwise leave
                  blank for the text string.
 
                  $to    = $IQ->GetTo();
                  $toJID = $IQ->GetTo("jid");
 
   GetFrom()      -  returns either a string with the JID, or a
   GetFrom("jid")    Net::XMPP::JID object for the person who
                     sent the <iq/>.  To get the JID object set
                     the string to "jid", otherwise leave blank for the
                     text string.
 
                     $from    = $IQ->GetFrom();
                     $fromJID = $IQ->GetFrom("jid");
 
   GetType() - returns a string with the type <iq/> this is.
 
               $type = $IQ->GetType();
 
   GetID() - returns an integer with the id of the <iq/>.
 
             $id = $IQ->GetID();
 
   GetError() - returns a string with the text description of the error.
 
                $error = $IQ->GetError();
 
   GetErrorCode() - returns a string with the code of error.
 
                    $errorCode = $IQ->GetErrorCode();
 
   GetQuery() - returns a Net::XMPP::Stanza object that contains the data
                in the query of the <iq/>.  Basically, it returns the
                first child in the <iq/>.
 
                $query = $IQ->GetQuery();
 
   GetQueryXMLNS() - returns a string with the namespace of the query
                     for this <iq/>, if one exists.
 
                     $xmlns = $IQ->GetQueryXMLNS();
 
 

Creation functions

   SetIQ(to=>string|JID,    - set multiple fields in the <iq/> at one
         from=>string|JID,    time.  This is a cumulative and over
         id=>string,          writing action.  If you set the "to"
         type=>string,        attribute twice, the second setting is
         errorcode=>string,   what is used.  If you set the status, and
         error=>string)       then set the priority then both will be in
                              the <iq/> tag.  For valid settings read the
                              specific Set functions below.
 
                              $IQ->SetIQ(type=>"get",
                                         to=>"bob\@jabber.org");
 
                              $IQ->SetIQ(to=>"bob\@jabber.org",
                                         errorcode=>403,
                                         error=>"Permission Denied");
 
   SetTo(string) - sets the to attribute.  You can either pass a string
   SetTo(JID)      or a JID object.  They must be a valid Jabber
                   Identifiers or the server will return an error message.
                   (ie.  bob@jabber.org, etc...)
 
                   $IQ->SetTo("bob\@jabber.org");
 
   SetFrom(string) - sets the from attribute.  You can either pass a
   SetFrom(JID)      string or a JID object.  They must be a valid JIDs
                     or the server will return an error message.
                     (ie.  bob@jabber.org, etc...)
 
                     $IQ->SetFrom("me\@jabber.org");
 
   SetType(string) - sets the type attribute.  Valid settings are:
 
                     get      request information
                     set      set information
                     result   results of a get
                     error    there was an error
 
                     $IQ->SetType("set");
 
   SetErrorCode(string) - sets the error code of the <iq/>.
 
                          $IQ->SetErrorCode(403);
 
   SetError(string) - sets the error string of the <iq/>.
 
                      $IQ->SetError("Permission Denied");
 
   NewChild(string) - creates a new Net::XMPP::Stanza object with the
                      namespace in the string.  In order for this
                      function to work with a custom namespace, you
                      must define and register that namespace with the
                      IQ module.  For more information please read the
                      documentation for Net::XMPP::Stanza.
 
                      $queryObj = $IQ->NewChild("jabber:iq:auth");
                      $queryObj = $IQ->NewChild("jabber:iq:roster");
 
   Reply(hash) - creates a new IQ object and populates the to/from
                 fields.  If you specify a hash the same as with SetIQ
                 then those values will override the Reply values.
 
                 $iqReply = $IQ->Reply();
                 $iqReply = $IQ->Reply(type=>"result");
 
 

Removal functions

   RemoveTo() - removes the to attribute from the <iq/>.
 
                $IQ->RemoveTo();
 
   RemoveFrom() - removes the from attribute from the <iq/>.
 
                  $IQ->RemoveFrom();
 
   RemoveID() - removes the id attribute from the <iq/>.
 
                $IQ->RemoveID();
 
   RemoveType() - removes the type attribute from the <iq/>.
 
                  $IQ->RemoveType();
 
   RemoveError() - removes the <error/> element from the <iq/>.
 
                   $IQ->RemoveError();
 
   RemoveErrorCode() - removes the code attribute from the <error/>
                       element in the <iq/>.
 
                       $IQ->RemoveErrorCode();
 
 

Test functions

   DefinedTo() - returns 1 if the to attribute is defined in the <iq/>,
                 0 otherwise.
 
                 $test = $IQ->DefinedTo();
 
   DefinedFrom() - returns 1 if the from attribute is defined in the
                   <iq/>, 0 otherwise.
 
                   $test = $IQ->DefinedFrom();
 
   DefinedID() - returns 1 if the id attribute is defined in the <iq/>,
                 0 otherwise.
 
                 $test = $IQ->DefinedID();
 
   DefinedType() - returns 1 if the type attribute is defined in the
                   <iq/>, 0 otherwise.
 
                   $test = $IQ->DefinedType();
 
   DefinedError() - returns 1 if <error/> is defined in the <iq/>,
                    0 otherwise.
 
                    $test = $IQ->DefinedError();
 
   DefinedErrorCode() - returns 1 if the code attribute is defined in
                        <error/>, 0 otherwise.
 
                        $test = $IQ->DefinedErrorCode();
 
   DefinedQuery() - returns 1 if there is at least one namespaced
                    child in the object.
 
 

AUTHOR

Ryan Eatmon This module is free software, you can redistribute it and/or modify it under the LGPL.