#!/usr/bin/perl
# vi: ts=4 sw=4
use Net::DBus;
use Net::DBus::Reactor;
use strict;
use warnings;
our $VERSION = 0.01;
# Constants
my $Connection_Status_Connected = 0;
# Salut connection manager
my $bus = Net::DBus->session;
my $managerService = $bus->get_service('org.freedesktop.Telepathy.ConnectionManager.salut');
my $managerObject = $managerService->get_object('/org/freedesktop/Telepathy/ConnectionManager/salut', 'org.freedesktop.Telepathy.ConnectionManager');
print "List protocols:\n";
my $protocols = $managerObject->ListProtocols;
for my $protocol (@$protocols) {
print " $protocol\n";
}
# Request connection
my ($connectionName, $connectionPath) = $managerObject->RequestConnection('salut', {'first-name' => 'Jack', 'last-name' => 'Bates'});
print "Connection name: $connectionName\n";
print "Connection path: $connectionPath\n";
my $connectionService = $bus->get_service($connectionName);
my $connectionObject = $connectionService->get_object($connectionPath, 'org.freedesktop.Telepathy.Connection');
# Connect
$connectionObject->connect_to_signal('StatusChanged', \&statusChanged);
$connectionObject->Connect;
# StatusChanged callback
sub statusChanged {
my ($status, $reason) = @_;
if ($status != $Connection_Status_Connected) {
print "Status: $status\n";
print "Reason: $reason\n";
return;
}
print "List channels:\n";
my $channels = $connectionObject->ListChannels;
for my $channel (@$channels) {
print " $channel\n";
}
$connectionObject->Disconnect;
exit;
}
# Event loop
my $reactor = Net::DBus::Reactor->main;
$reactor->run;