remove old parameters
[xmlrtorrent.git] / xmlrtorrent.pm
1 package xmlrtorrent;
2
3 use strict;
4 use Data::Dumper;
5
6 sub new {
7     my $class = shift;
8     my $self = {@_};
9
10     return bless($self, $class);
11 }
12
13 # This is shamelessly stolen from pythons urlgrabber
14 sub _format_number {
15     my $number = shift;
16     my $SI = shift || 0;
17     my @symbols = ('', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y');
18     my $step = $SI?1000:1024;
19     my $thresh = 999;
20     my $depth = 0;
21     my $max_depth = $#symbols;
22     my $format;
23
24     while (($number > $thresh) and ($depth < $max_depth)) {
25         $depth += 1;
26         $number /= $step;
27     }
28
29     if ($number =~ /^[+-]?\d+$/) {
30         # Integer.
31         $format = '%i%s';
32     } elsif ($number < 9.95) {
33         $format = '%.1f%s';
34     } else {
35         $format = '%.0f%s';
36     }
37     return sprintf($format, $number, $symbols[$depth]);
38 }
39
40
41
42 sub load_start {
43     my $self = shift;
44     my $talker = shift;
45     my $URL = shift;
46     my $res;
47
48     $res = $talker->send_request('load_start', $URL);
49     unless(ref($res)) {
50         $self->{'__ERROR'} = $res;
51         return undef
52     }
53
54     if ($res->is_fault()) {
55         $self->{'__ERROR'} = $res->value()->{'faultString'};
56         return undef;
57     }
58
59     return 1;
60 }
61
62 sub download_list {
63     my $self = shift;
64     my $talker = shift;
65     my $res;
66
67     $res = $talker->send_request('d.multicall', '',
68             'd.get_name=',
69             'd.get_size_bytes=',
70             'd.get_bytes_done=',
71             'd.get_up_rate=',
72             'd.get_down_rate=',
73             'd.is_active=');
74     unless(ref($res)) {
75         $self->{'__ERROR'} = $res;
76         return undef
77     }
78
79     if ($res->is_fault()) {
80         $self->{'__ERROR'} = $res->value()->{'faultString'};
81         return undef;
82     }
83
84     my @ret = ();
85     foreach (@{$res->value()}) {
86         push @ret,
87         {
88             'NAME'       => $_->[0]->value(),
89             'SIZE_BYTES' => _format_number($_->[1]->value()),
90             'BYTES_DONE' => _format_number($_->[2]->value()),
91             'UP_RATE'    => _format_number($_->[3]->value()),
92             'DOWN_RATES' => _format_number($_->[4]->value()),
93             'ACTIVE'     => $_->[5]->value(),
94         };
95     }
96
97     return \@ret;
98 }
99
100 sub errstr {
101     my $self = shift;
102
103     return $self->{'__ERROR'};
104 }
105
106 1;