NAME

Net::XMPP2::Ext::Disco - A service discovery manager class for XEP-0030

SYNOPSIS

package foo;
use Net::XMPP2::Ext::Disco;

my $con = Net::XMPP2::IM::Connection->new (...);
...
my $disco = Net::XMPP2::Ext::Disco->new (connection => $con);

$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.

METHODS

new (%args)

Creates a new disco handle. Possible keys for the %args hash are:

connection => $connection

The connection this handle will send the requests with and answer requests.

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 ($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. 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 ('a@b.com', undef, sub {
   my ($disco, $items, $error) = @_;
   die $error->string if $error;

   # do something with the items here ;_)
});
request_info ($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. 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.