+++ /dev/null
-package xmlrtorrent;
-
-use strict;
-use Data::Dumper;
-
-sub new {
- my $class = shift;
- my $self = {@_};
-
- return bless($self, $class);
-}
-
-# This is shamelessly stolen from pythons urlgrabber
-sub _format_number {
- my $number = shift;
- my $SI = shift || 0;
- my @symbols = ('', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y');
- my $step = $SI?1000:1024;
- my $thresh = 999;
- my $depth = 0;
- my $max_depth = $#symbols;
- my $format;
-
- while (($number > $thresh) and ($depth < $max_depth)) {
- $depth += 1;
- $number /= $step;
- }
-
- if ($number =~ /^[+-]?\d+$/) {
- # Integer.
- $format = '%i%s';
- } elsif ($number < 9.95) {
- $format = '%.1f%s';
- } else {
- $format = '%.0f%s';
- }
- return sprintf($format, $number, $symbols[$depth]);
-}
-
-
-
-sub load_start {
- my $self = shift;
- my $talker = shift;
- my $URL = shift;
- my $res;
-
- $res = $talker->send_request('load_start', $URL);
- unless(ref($res)) {
- $self->{'__ERROR'} = $res;
- return undef
- }
-
- if ($res->is_fault()) {
- $self->{'__ERROR'} = $res->value()->{'faultString'};
- return undef;
- }
-
- return 1;
-}
-
-sub download_list {
- my $self = shift;
- my $talker = shift;
- my $res;
-
- $res = $talker->send_request('d.multicall', '',
- 'd.get_name=',
- 'd.get_size_bytes=',
- 'd.get_bytes_done=',
- 'd.get_up_rate=',
- 'd.get_down_rate=',
- 'd.is_active=');
- unless(ref($res)) {
- $self->{'__ERROR'} = $res;
- return undef
- }
-
- if ($res->is_fault()) {
- $self->{'__ERROR'} = $res->value()->{'faultString'};
- return undef;
- }
-
- my @ret = ();
- foreach (@{$res->value()}) {
- push @ret,
- {
- 'NAME' => $_->[0]->value(),
- 'SIZE_BYTES' => _format_number($_->[1]->value()),
- 'BYTES_DONE' => _format_number($_->[2]->value()),
- 'UP_RATE' => _format_number($_->[3]->value()),
- 'DOWN_RATE' => _format_number($_->[4]->value()),
- 'ACTIVE' => $_->[5]->value(),
- };
- }
-
- return \@ret;
-}
-
-sub errstr {
- my $self = shift;
-
- return $self->{'__ERROR'};
-}
-
-1;