#!/usr/bin/perl -w
#
#  Return the name(s) of any loaded plugins.
#
#  If a host:port is specified on the command line submit against that
# instead of http://localhost:8888/
#
# Steve
# --
#


use strict;
use warnings;
use Getopt::Long;

require RPC::XML;
require RPC::XML::Client;


#
#  Config
#
my %CONFIG;

#
#  Default server
#
$CONFIG{ 'server' } = "http://localhost:8888/";


#
#  Parse our options
#
exit if ( !GetOptions( "server=s", \$CONFIG{ 'server' } ) );



#
#  Make sure the server is valid
#
if ( $CONFIG{ 'server' } !~ /^http:\/\// )
{
    $CONFIG{ 'server' } = "http://" . $CONFIG{ 'server' };
}
if ( $CONFIG{ 'server' } !~ /:([0-9]+)/ )
{
    $CONFIG{ 'server' } .= ":8888/";
}


#
#  Do it.
#
my $plugins = getPlugins();
if ( $plugins && @$plugins )
{
    foreach my $p (@$plugins)
    {
        print $p . "\n";
    }
}
else
{
    print "No plugins loaded\n";
}


#
#  All done
#
exit;




=begin doc

Make a request against the RPC server for the list of loaded plugins.

=end doc

=cut

sub getPlugins
{
    my $result;

    #
    #  Make the result
    #
    eval {
        my $client = RPC::XML::Client->new( $CONFIG{ 'server' } );
        my $req    = RPC::XML::request->new('getPlugins');
        my $res    = $client->send_request($req);
        $result = $res->value();
    };
    if ($@)
    {
        print "Connection failed to $CONFIG{'server'}\n";
        print "Or there was some other error.\n";
        print "Aborting.\n";
        exit;
    }

    return ($result);
}
