- Add authentication support
[xmlrtorrent.git] / xmlrtorrent.pm
1 package xmlrtorrent;
2
3 use strict;
4 use RPC::XML;
5 use RPC::XML::Client;
6 use Data::Dumper;
7
8 sub new {
9     my $class = shift;
10     my $self = {@_};
11
12     unless(exists($self->{'XMLURL'}) and defined($self->{'XMLURL'})) {
13         return undef;
14     }
15
16     $self->{'__RPCClient'} = RPC::XML::Client->new($self->{'XMLURL'});
17     if ((exists($self->{'USERNAME'}) and exists($self->{'PASSWORD'})) and
18         ($self->{'USERNAME'} ne '')) {
19         $self->{'__RPCClient'}->credentials('', $self->{'USERNAME'}, $self->{'PASSWORD'});
20     }
21
22     return bless($self, $class);
23 }
24
25 sub load_start{
26     my $self = shift;
27     my $URL = shift;
28     my $res;
29
30     $res = $self->{'__RPCClient'}->send_request('load_start', $URL);
31     unless(ref($res)) {
32         $self->{'__ERROR'} = $res;
33         return undef
34     }
35
36     if ($res->is_fault()) {
37         $self->{'__ERROR'} = $res->value()->{'faultString'};
38         return undef;
39     }
40
41     return 1;
42 }
43
44 sub download_list {
45     my $self = shift;
46     my $res;
47
48     $res = $self->{'__RPCClient'}->send_request('d.multicall', '',
49             'd.get_name=',
50             'd.get_size_bytes=',
51             'd.get_bytes_done=',
52             'd.get_up_rate=',
53             'd.get_down_rate=',
54             'd.is_active=');
55     unless(ref($res)) {
56         $self->{'__ERROR'} = $res;
57         return undef
58     }
59
60     if ($res->is_fault()) {
61         $self->{'__ERROR'} = $res->value()->{'faultString'};
62         return undef;
63     }
64
65     return $res->value();
66 }
67
68 sub errstr {
69     my $self = shift;
70
71     return $self->{'__ERROR'};
72 }
73
74 1;