Net::XMPP::IQ3pm
Xmpp info/query module
Usage
Net::XMPP::IQ is a companion to the Net::XMPP module. Itprovides the user a simple interface to set and retrieve allparts of an XMPP IQ.
Overview
Net::XMPP::IQ differs from the other Net::XMPP::* modules in thatthe XMLNS of the query is split out into a submodule underIQ. For specifics on each module please view the documentationfor the Net::XMPP::Namespaces module.A Net::XMPP::IQ object is passed to the callback function for themessage. Also, the first argument to the callback functions is thesession ID from XML::Stream. There are some cases where you mightwant this information, like if you created a Client that connects totwo 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 = Net::XMPP::IQ->new();$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 fromfilled in correctly, and a query object alreadyadded in. The %args that you pass are passedto SetIQ() and will overwrite the IQ settingsthat Reply sets.
Retrieval functions
GetTo() - returns either a string with the JID, or aGetTo("jid") Net::XMPP::JID object for the person who isgoing to receive the <iq/>. To get the JIDobject set the string to "jid", otherwise leaveblank for the text string.$to = $IQ->GetTo();$toJID = $IQ->GetTo("jid");GetFrom() - returns either a string with the JID, or aGetFrom("jid") Net::XMPP::JID object for the person whosent the <iq/>. To get the JID object setthe string to "jid", otherwise leave blank for thetext 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 datain the query of the <iq/>. Basically, it returns thefirst child in the <iq/>.$query = $IQ->GetQuery();GetQueryXMLNS() - returns a string with the namespace of the queryfor this <iq/>, if one exists.$xmlns = $IQ->GetQueryXMLNS();
Creation functions
SetIQ(to=>string|JID, - set multiple fields in the <iq/> at onefrom=>string|JID, time. This is a cumulative and overid=>string, writing action. If you set the "to"type=>string, attribute twice, the second setting iserrorcode=>string, what is used. If you set the status, anderror=>string) then set the priority then both will be inthe <iq/> tag. For valid settings read thespecific 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 stringSetTo(JID) or a JID object. They must be a valid JabberIdentifiers or the server will return an error message.(ie. [email protected], etc...)$IQ->SetTo("bob\@jabber.org");SetFrom(string) - sets the from attribute. You can either pass aSetFrom(JID) string or a JID object. They must be a valid JIDsor the server will return an error message.(ie. [email protected], etc...)$IQ->SetFrom("me\@jabber.org");SetType(string) - sets the type attribute. Valid settings are:get request informationset set informationresult results of a geterror 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 thenamespace in the string. In order for thisfunction to work with a custom namespace, youmust define and register that namespace with theIQ module. For more information please read thedocumentation 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/fromfields. If you specify a hash the same as with SetIQthen 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 namespacedchild in the object.
Releases
12 releases since Debian 3.1 (Sarge); the text changed 8 times.