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 my $xmlurl = $self->_getval('XMLURL');
40 unless (defined($xmlurl) and $xmlurl ne '') {
41 return 'http talker: XMLURL not set';
44 if ($xmlurl ne $self->{'_LASTXMLURL'}) {
45 $self->{'_LASTXMLURL'} = $xmlurl;
46 $self->{'__RPCClient'} = RPC::XML::Client->new($xmlurl);
49 my $username = $self->_getval('USERNAME');
50 my $password = $self->_getval('PASSWORD');
52 if (defined $username and defined $password and $username ne '') {
53 # mitch: let me guess, the realm must be configurable, too!
54 $self->{'__RPCClient'}->credentials('', $username, $password);
57 return $self->{'__RPCClient'}->send_request(@params);