1 # Talker using RPC over HTTP
3 # (c) 2008 by Ralf Ertzinger <ralf@camperquake.de>
4 # licensed under GNU GPL v2
6 package xmlrtorrent::HTTPTalker;
7 use xmlrtorrent::TalkerBase;
8 @ISA = qw(xmlrtorrent::TalkerBase);
16 my $self = $class->SUPER::new();
18 $self->{'NAME'} = 'http';
19 $self->{'DESC'} = 'talker using RPC over HTTP';
20 $self->{'_PARAMS'} = {
21 'XMLURL' => ['', 'URL of SCGI script'],
22 'USERNAME' => ['', 'username for RPC credentials (optional)'],
23 'PASSWORD' => ['', 'password for RPC credentials (optional)'],
25 $self->{'_LASTXMLURL'} = undef;
29 $self->_prepare_parameters();
38 unless (exists($self->{'_PARAMS'}->{'XMLURL'}) and defined($self->{'_PARAMS'}->{'XMLURL'})) {
39 return 'http talker: XMLURL not set';
42 if ($self->{'_PARAMS'}->{'XMLURL'} ne $self->{'_LASTXMLURL'}) {
43 $self->{'_LASTXMLURL'} = $self->{'_PARAMS'}->{'XMLURL'};
44 $self->{'__RPCClient'} = RPC::XML::Client->new($self->{'_PARAMS'}->{'XMLURL'});
47 if ((exists($self->{'_PARAMS'}->{'USERNAME'}) and exists($self->{'_PARAMS'}->{'PASSWORD'})) and
48 ($self->{'_PARAMS'}->{'USERNAME'} ne '')) {
49 # mitch: let me guess, the realm must be configurable, too!
50 $self->{'__RPCClient'}->credentials('', $self->{'_PARAMS'}->{'USERNAME'}, $self->{'_PARAMS'}->{'PASSWORD'});
53 return $self->{'__RPCClient'}->send_request(@params);