- Initial checkin
[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'}) && defined($self->{'XMLURL'})) {
13         return undef;
14     }
15
16     $self->{'__RPCClient'} = RPC::XML::Client->new($self->{'XMLURL'});
17
18     return bless($self, $class);
19 }
20
21 sub load_start{
22     my $self = shift;
23     my $URL = shift;
24     my $res;
25
26     $res = $self->{'__RPCClient'}->send_request('load_start', $URL);
27     unless(ref($res)) {
28         $self->{'__ERROR'} = $res;
29         return undef
30     }
31
32     if ($res->is_fault()) {
33         $self->{'__ERROR'} = $res->value()->{'faultString'};
34         return undef;
35     }
36
37     return 1;
38 }
39
40 sub download_list {
41     my $self = shift;
42     my $res;
43
44     $res = $self->{'__RPCClient'}->send_request('d.multicall', '',
45             'd.get_name=',
46             'd.get_size_bytes=',
47             'd.get_bytes_done=',
48             'd.get_up_rate=',
49             'd.get_down_rate=',
50             'd.is_active=');
51     unless(ref($res)) {
52         $self->{'__ERROR'} = $res;
53         return undef
54     }
55
56     if ($res->is_fault()) {
57         $self->{'__ERROR'} = $res->value()->{'faultString'};
58         return undef;
59     }
60
61     return $res->value();
62 }
63
64 sub errstr {
65     my $self = shift;
66
67     return $self->{'__ERROR'};
68 }
69
70 1;