NAME
Net::Jabber::Data - Jabber Data Library
SYNOPSIS
Net::Jabber::Data is a companion to the Net::Jabber::XDB module. Itprovides the user a simple interface to set and retrieve allparts of a Jabber XDB Data.
DESCRIPTION
Net::Jabber::Data differs from the other modules in that its behaviorand available functions are based off of the XML namespace that isset in it. The current list of supported namespaces is:jabber:iq:authjabber:iq:auth:0kjabber:iq:registerjabber:iq:rosterFor more information on what these namespaces are for, visithttp://www.jabber.org and browse the Jabber Programmers Guide.Each of these namespaces provide Net::Jabber::Data with the functionsto access the data. By using the AUTOLOAD function the functions foreach namespace is used when that namespace is active.To access a Data object you must create an XDB object and use theaccess functions there to get to the Data. To initialize the XDB witha Jabber <xdb/> you must pass it the XML::Stream hash from theNet::Jabber::Client module.my $xdb = new Net::Jabber::XDB(%hash);There has been a change from the old way of handling the callbacks.You no longer have to do the above yourself, a Net::Jabber::XDBobject is passed to the callback function for the message. Also,the first argument to the callback functions is the session ID fromXML::Streams. There are some cases where you might want thisinformation, like if you created a Client that connects to two serversat once, or for writing a mini server.use Net::Jabber qw(Client);sub xdbCB {my ($sid,$XDB) = @_;my $data = $XDB->GetData();...}You now have access to all of the retrieval functions available forthat namespace.To create a new xdb to send to the server:use Net::Jabber;my $xdb = new Net::Jabber::XDB();$data = $xdb->NewData("jabber:iq:auth");Now you can call the creation functions for the Data as defined in theproper namespaces. See below for the general <data/> functions, andin each data module for those functions.For more information about the array format being passed to theCallBack please read the Net::Jabber::Client documentation.
METHODS
Retrieval functions
GetXMLNS() - returns a string with the namespace of the data thatthe <xdb/> contains.$xmlns = $XDB->GetXMLNS();GetData() - since the behavior of this module depends on thenamespace, a Data object may contain Data objects.This helps to leverage code reuse by making childrenbehave in the same manner. More than likely thisfunction will never be called.@data = GetData()
Creation functions
SetXMLNS(string) - sets the xmlns of the <data/> to the string.$data->SetXMLNS("jabber:xdb:roster");
In an effort to make maintaining this document easier, I am not going to go into full detail on each of these functions. Rather I will present the functions in a list with a type in the first column to show what they return, or take as arugments. Here is the list of types I will use:
string - just a stringarray - array of stringsflag - this means that the specified child exists in theXML <child/> and acts like a flag. get will return0 or 1.JID - either a string or Net::Jabber::JID object.objects - creates new objects, or returns an array ofobjects.special - this is a special case kind of function. Usuallyjust by calling Set() with no arguments it willdefault the value to a special value, like OS or time.Sometimes it will modify the value you set, likein jabber:xdb:version SetVersion() the functionadds on the Net::Jabber version to the stringjust for advertisement purposes. =)master - this desribes a function that behaves like theSetMessage() function in Net::Jabber::Message.It takes a hash and sets all of the values defined,and the Set returns a hash with the values thatare defined in the object.
jabber:iq:
Type Get Set Defined======= ================ ================ ==================
jabber:iq:
Type Get Set Defined======= ================ ================ ==================
jabber:iq:
Type Get Set Defined======= ================ ================ ==================
jabber:iq:
Type Get Set Defined======= ================ ================ ==================
jabber:iq:
Type Get Set Defined======= ================ ================ ==================
CUSTOM NAMESPACES
Part of the flexability of this module is that you can define your ownnamespace. For more information on this topic, please read theNet::Jabber::Namespaces man page.
AUTHOR
By Ryan Eatmon in May of 2001 for http://jabber.org..
COPYRIGHT
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.