Add description support
[webservice-strike.git] / lib / WebService / Strike / Torrent.pm
index 4268d793ec062f1d349c601d26464f43dbe71f11..517020850a82aa33b2d098ddf4466573ac2ae7e4 100644 (file)
@@ -9,6 +9,7 @@ our $VERSION = '0.003';
 
 use Date::Parse qw/str2time/;
 use JSON::MaybeXS qw/decode_json/;
+use MIME::Base64;
 use WebService::Strike;
 
 __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/);
@@ -55,6 +56,16 @@ sub torrent{
        }
 }
 
+sub description{
+       my ($self) = @_;
+       return $self->{description} if $self->{description};
+       my $url = $WebService::Strike::BASE_URL . '/descriptions/?hash=' . $self->hash;
+       my $ht = WebService::Strike::_ht(); ## no critic (ProtectPrivate)
+       my $response = $ht->get($url);
+       return unless $response->{success};
+       $self->{description} = decode_base64 $response->{content}
+}
+
 1;
 __END__
 
@@ -83,6 +94,7 @@ WebService::Strike::Torrent - Class representing information about a torrent
   say $t->magnet;           # magnet:?xt=urn:btih:B425907E5755031BDA4A8D1B6DCCACA97DA14C04&dn=Arch%20Linux%202015.01.01%20%28x86%2Fx64%29
   my $tor = $t->torrent;    # $torrent contains the torrent file contents
   $t->torrent('x.torrent'); # Download torrent file to x.torrent
+  say $t->description;      # <HTML fragment describing Arch Linux>
 
 =head1 DESCRIPTION
 
@@ -153,6 +165,11 @@ I<$filename>.
 
 Both forms return a true value for success and false for failure.
 
+=item B<description>
+
+The description of the torrent. This method sends an extra request to
+Strike. Successful responses are cached.
+
 =back
 
 =head1 SEE ALSO
This page took 0.010222 seconds and 4 git commands to generate.