NAME
Net::XMPP2::Ext::Disco - Service discovery manager class for XEP-0030
SYNOPSIS
package foo;
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 ('romeo@montague.net',
node => 'http://jabber.org/protocol/tune',
cb => sub {
my ($disco, $response, $error) = @_;
if ($error) { print "ERROR".$error->string."\n" }
else {
... do something with the $response ...
}
}
);
DESCRIPTION
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.
METHODS
- new (%args)
-
Creates a new disco handle.
- set_identity ($category, $type, $name)
-
This sets the identity of the top info node. The default is:
$category = "client"
,$type = "console"
and$name = "Net::XMPP2"
.$name
is optional and can be undef.For a list of valid identites look at:
http://www.xmpp.org/registrar/disco-categories.html
Valid identity types for
$category = "client"
may be:bot console handheld pc phone web
- enable_feature ($uri)
-
This method enables the feature
$uri
, where$uri
should be one of the values from the Name column on: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
- disable_feature ($uri)
-
This method enables the feature
$uri
, where$uri
should be one of the values from the Name column on: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
- request_items ($con, $dest, $node, $cb)
-
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.$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.$disco->request_items ($con, 'a@b.com', undef, sub { my ($disco, $items, $error) = @_; die $error->string if $error; # do something with the items here ;_) });
- request_info ($con, $dest, $node, $cb)
-
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 ('a@b.com', undef, sub { my ($disco, $info, $error) = @_; die $error->string if $error; # do something with info here ;_) });
AUTHOR
Robin Redeker, <elmex at ta-sa.org>
, JID: <elmex at jabber.org>
COPYRIGHT & LICENSE
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.