- Handle autosave on module unload/irssi exit
[xmlrtorrent.git] / xmlrtorrent / RTorrentTalkerBase.pm
1 # Talker for RTorrent
2 #
3 # (c) 2008 by Ralf Ertzinger <ralf@camperquake.de>
4 # licensed under GNU GPL v2
5
6 package xmlrtorrent::RTorrentTalkerBase;
7 use xmlrtorrent::TalkerBase;
8 @ISA = qw(xmlrtorrent::TalkerBase);
9
10 use Data::Dumper;
11 use strict;
12
13 sub new {
14     my $class = shift;
15     my $self = $class->SUPER::new();
16
17     bless($self, $class);
18
19     $self->_prepare_parameters();
20
21     return $self;
22 }
23
24 sub load_start {
25     my $self = shift;
26     my $url = shift;
27     my $res;
28
29     $res = $self->send_request('load_start', $url);
30     unless(ref($res)) {
31         $self->{'__ERROR'} = $res;
32         return undef;
33     }
34
35     if ($res->is_fault()) {
36         $self->{'__ERROR'} = $res->value()->{'faultString'};
37         return undef;
38     }
39
40     return 1;
41 }
42
43 sub download_list {
44     my $self = shift;
45     my $talker = shift;
46     my $res;
47
48     $res = $talker->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     my @ret = ();
66     foreach (@{$res->value()}) {
67         push @ret,
68         {
69             'NAME'       => $_->[0]->value(),
70             'SIZE_BYTES' => $_->[1]->value(),
71             'BYTES_DONE' => $_->[2]->value(),
72             'UP_RATE'    => $_->[3]->value(),
73             'DOWN_RATE'  => $_->[4]->value(),
74             'ACTIVE'     => $_->[5]->value(),
75         };
76     }
77
78     return \@ret;
79 }
80
81 1;