File Coverage

blib/lib/WebService/Strike/Torrent.pm
Criterion Covered Total %
statement 62 64 96.8
branch 9 14 64.2
condition 2 6 33.3
subroutine 13 13 100.0
pod 4 4 100.0
total 90 101 89.1


line stmt bran cond sub pod time code
1             package WebService::Strike::Torrent;
2              
3 2     2   19319 use 5.014000;
  2         7  
  2         77  
4 2     2   11 use strict;
  2         3  
  2         99  
5 2     2   15 use warnings;
  2         2  
  2         95  
6 2     2   641 use parent qw/Class::Accessor::Fast/;
  2         271  
  2         12  
7              
8             our $VERSION = '0.004002';
9              
10 2     2   7364 use Date::Parse qw/str2time/;
  2         13818  
  2         348  
11 2     2   652 use JSON::MaybeXS qw/decode_json/;
  2         8030  
  2         111  
12 2     2   1068 use MIME::Base64;
  2         1170  
  2         128  
13 2     2   496 use WebService::Strike;
  2         5  
  2         232  
14              
15             __PACKAGE__->mk_ro_accessors(qw/torrent_hash torrent_title torrent_category sub_category seeds leeches file_count size upload_date uploader_username file_info file_names file_lengths magnet_uri imdb_id/);
16              
17             BEGIN {
18 2     2   7 *hash = *torrent_hash;
19 2         3 *title = *torrent_title;
20 2         2 *category = *torrent_category;
21 2         2 *count = *file_count;
22 2         2 *date = *upload_date;
23 2         3 *uploader = *uploader_username;
24 2         2 *names = *file_names;
25 2         2 *lengths = *file_lengths;
26 2         698 *magnet = *magnet_uri;
27             };
28              
29             sub new{
30 206     206 1 359 my ($self, @args) = @_;
31 206         653 $self = $self->SUPER::new(@args);
32 206         3644 $self->{torrent_hash} = uc $self->hash;
33 206         1214 $self->{upload_date} = str2time $self->date, 'UTC';
34 206 100       42690 if ($self->file_info) {
35 6         41 $self->{file_names} = $self->file_info->{file_names};
36 6         29 $self->{file_lengths} = $self->file_info->{file_lengths};
37             }
38 206 100       1248 $self->{imdb_id} = $self->{imdbid} if $self->{imdbid};
39 206         710 $self
40             }
41              
42             sub torrent{
43 1     1 1 6513 my ($self, $file) = @_;
44 1         6 my $url = $WebService::Strike::BASE_URL . '/torrents/download/?hash=' . $self->hash;
45 1         9 my $ht = WebService::Strike::_ht(); ## no critic (ProtectPrivate)
46 1         252 my $response = $ht->get($url);
47 1 50       128194 return unless $response->{success};
48 1         17 $response = decode_json $response->{content};
49 1         8 $url = $response->{message};
50              
51 1 50       6 if (defined $file) {
52 0         0 $response = $ht->mirror($url, $file);
53 0         0 return $response->{success}
54             } else {
55 1         69 $response = $ht->get($url);
56 1   33     17517 return $response->{success} && $response->{content}
57             }
58             }
59              
60             sub description{
61 1     1 1 3768 my ($self) = @_;
62 1 50       7 return $self->{description} if $self->{description};
63 1         12 my $url = $WebService::Strike::BASE_URL . '/torrents/descriptions/?hash=' . $self->hash;
64 1         15 my $ht = WebService::Strike::_ht(); ## no critic (ProtectPrivate)
65 1         150 my $response = $ht->get($url);
66 1 50       289314 return unless $response->{success};
67 1         40 $self->{description} = decode_base64 $response->{content}
68             }
69              
70             sub imdb {
71 1     1 1 3 my ($self) = @_;
72 1 50       4 return unless $self->imdb_id;
73 1   33     13 $self->{imdb} //= WebService::Strike::strike_imdb ($self->imdb_id)
74             }
75              
76             1;
77             __END__