Net::XMPP2::Ext::Disco - Service discovery manager class for XEP-0030
use Net::XMPP2::Ext::Disco; my $con = Net::XMPP2::IM::Connection->new (...); $con->add_extension (my $disco = Net::XMPP2::Ext::Disco->new); $disco->request_items ($con, 'romeo@montague.net', undef, sub { my ($disco, $items, $error) = @_; if ($error) { print "ERROR:" . $error->string . "\n" } else { ... do something with the $items ... } } );
This module represents a service discovery manager class. You make instances of this class and get a handle to send discovery requests like described in XEP-0030.
It also allows you to setup a disco-info/items tree that others can walk and also lets you publish disco information.
This class is derived from Net::XMPP2::Ext and can be added as extension to objects that implement the Net::XMPP2::Extendable interface or derive from it.
Creates a new disco handle.
This sets the identity of the top info node.
$name is optional and can be undef. Please note that $name will overwrite all previous set names! If $name is undefined then no previous set name is overwritten.
$name
For a list of valid identites look at:
http://www.xmpp.org/registrar/disco-categories.html
Valid identity $types for $category = "client" may be:
$type
$category = "client"
bot console handheld pc phone web
This function removes the identity $category and $type.
$category
This method enables the feature $uri, where $uri should be one of the values from the Name column on:
$uri
http://www.xmpp.org/registrar/disco-features.html
These features are enabled by default:
http://jabber.org/protocol/disco#info http://jabber.org/protocol/disco#items
You can pass also a list of features you want to enable to enable_feature!
enable_feature
You can pass also a list of features you want to disable to disable_feature!
disable_feature
This method does send a items request to the JID entity $from. $node is the optional node to send the request to, which can be undef.
$from
$node
$con must be an instance of Net::XMPP2::Connection or a subclass of it. The callback $cb will be called when the request returns with 3 arguments: the disco handle, an Net::XMPP2::Ext::Disco::Items object (or undef) and an Net::XMPP2::Error::IQ object when an error occured and no items were received.
$con
$cb
The timeout of the request is the IQ timeout of the connection $con.
$disco->request_items ($con, 'a@b.com', undef, sub { my ($disco, $items, $error) = @_; die $error->string if $error; # do something with the items here ;_) });
This method does send a info request to the JID entity $from. $node is the optional node to send the request to, which can be undef.
$con must be an instance of Net::XMPP2::Connection or a subclass of it. The callback $cb will be called when the request returns with 3 arguments: the disco handle, an Net::XMPP2::Ext::Disco::Info object (or undef) and an Net::XMPP2::Error::IQ object when an error occured and no items were received.
$disco->request_info ($con, 'a@b.com', undef, sub { my ($disco, $info, $error) = @_; die $error->string if $error; # do something with info here ;_) });
Robin Redeker, <elmex at ta-sa.org>, JID: <elmex at jabber.org>
<elmex at ta-sa.org>
<elmex at jabber.org>
Copyright 2007 Robin Redeker, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Net::XMPP2, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::XMPP2
CPAN shell
perl -MCPAN -e shell install Net::XMPP2
For more information on module installation, please visit the detailed CPAN module installation guide.