X-Git-Url: https://git.camperquake.de/gitweb.cgi?p=xmlrtorrent.git;a=blobdiff_plain;f=xmlrtorrent%2FHTTPTalker.pm;h=4eb6a8d3fe9e997e9bc9a4b7e96f1dae915e564c;hp=bab2209017aa5857c292639fe69aa23cac8fa062;hb=8d2a3eb8a869670b3b80896a687dbf733c671170;hpb=f53811070671adc7647202740c5921bc6ae8340d diff --git a/xmlrtorrent/HTTPTalker.pm b/xmlrtorrent/HTTPTalker.pm index bab2209..4eb6a8d 100644 --- a/xmlrtorrent/HTTPTalker.pm +++ b/xmlrtorrent/HTTPTalker.pm @@ -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,26 @@ sub new { return $self; } +sub send_request { + my $self = shift; + my @params = @_; + + unless (exists($self->{'XMLURL'}) and defined($self->{'XMLURL'})) { + return 'http talker: XMLURL not set'; + } + + if ($self->{'XMLURL'} ne $self->{'_LASTXMLURL'}) { + $self->{'_LASTXMLURL'} = $self->{'XMLURL'}; + $self->{'__RPCClient'} = RPC::XML::Client->new($self->{'XMLURL'}); + } + + if ((exists($self->{'USERNAME'}) and exists($self->{'PASSWORD'})) and + ($self->{'USERNAME'} ne '')) { + # mitch: let me guess, the realm must be configurable, too! + $self->{'__RPCClient'}->credentials('', $self->{'USERNAME'}, $self->{'PASSWORD'}); + } + + return $self->{'__RPCClient'}->send_request(@params); +} + 1;