fix parameter usage
[xmlrtorrent.git] / xmlrtorrent / HTTPTalker.pm
index bab2209..d8b9340 100644 (file)
@@ -8,7 +8,7 @@ use xmlrtorrent::TalkerBase;
 @ISA = qw(xmlrtorrent::TalkerBase);
 
 use Data::Dumper;
-
+use RPC::XML::Client;
 use strict;
 
 sub new {
@@ -17,6 +17,12 @@ sub new {
 
     $self->{'NAME'} = 'http';
     $self->{'DESC'} = 'talker using RPC over HTTP';
+    $self->{'_PARAMS'} = {
+       'XMLURL' => ['', 'URL of SCGI script'],
+       'USERNAME' => ['', 'username for RPC credentials (optional)'],
+       'PASSWORD' => ['', 'password for RPC credentials (optional)'],
+    };
+    $self->{'_LASTXMLURL'} = undef;
 
     bless($self, $class);
 
@@ -25,4 +31,30 @@ sub new {
     return $self;
 }
 
+sub send_request {
+    my $self = shift;
+    my @params = @_;
+
+    my $xmlurl = $self->_getval('XMLURL');
+
+    unless (defined($xmlurl) and $xmlurl ne '') {
+       return 'http talker: XMLURL not set';
+    }
+
+    if ($xmlurl ne $self->{'_LASTXMLURL'}) {
+       $self->{'_LASTXMLURL'} = $xmlurl;
+       $self->{'__RPCClient'} = RPC::XML::Client->new($xmlurl);
+    }  
+    
+    my $username = $self->_getval('USERNAME');
+    my $password = $self->_getval('PASSWORD');
+
+    if (defined $username and defined $password and $username ne '') {
+       # mitch: let me guess, the realm must be configurable, too!
+       $self->{'__RPCClient'}->credentials('', $username, $password);
+    }
+
+    return $self->{'__RPCClient'}->send_request(@params);
+}
+
 1;