From: Marius Gavrilescu Date: Sat, 19 Mar 2016 18:01:10 +0000 (+0200) Subject: Add tdwtf_series function for new API call X-Git-Tag: 0.003~4 X-Git-Url: http://git.ieval.ro/?a=commitdiff_plain;h=8773c4ec2c066ec03cb01a646f1f8b05b3497bde;p=webservice-tdwtf.git Add tdwtf_series function for new API call --- diff --git a/lib/WebService/TDWTF.pm b/lib/WebService/TDWTF.pm index 0aa6dff..fe9ea4d 100644 --- a/lib/WebService/TDWTF.pm +++ b/lib/WebService/TDWTF.pm @@ -11,7 +11,7 @@ use JSON::MaybeXS qw/decode_json/; use Scalar::Util qw/looks_like_number/; use WebService::TDWTF::Article; -my @subs = qw/article list_recent list_series list_author/; +my @subs = qw/article list_recent list_series list_author series/; our @EXPORT = map { "tdwtf_$_" } @subs; our @EXPORT_OK = (@EXPORT, @subs); our %EXPORT_TAGS = (all => [@EXPORT_OK]); @@ -57,11 +57,14 @@ sub list_recent { my $url = @_ == 2 ? 'articles' : 'articles/recent'; _list $url sub list_series { _list 'series', @_ } sub list_author { _list 'author', @_ } +sub series { @{_query "$BASE_URL/series/"} } + BEGIN { *tdwtf_article = \&article; *tdwtf_list_recent = \&list_recent; *tdwtf_list_series = \&list_series; *tdwtf_list_author = \&list_author; + *tdwtf_series = \&series; } 1; @@ -100,6 +103,13 @@ WebService::TDWTF - retrieve articles from thedailywtf.com # All Error'd articles published in January 2014 my @jan14_errord = tdwtf_list_series 'errord', 2014, 1; + my @series = series; # List of all series + my $series = series; # Number of series ($series == @series) + print $series[0]->Slug; # alexs-soapbox + print $series[0]->Title; # Alex's Soapbox + print $series[0]->Description; # + print $series[0]->CssClass; # tales + =head1 DESCRIPTION WebService::TDWTF is an interface to the API of L. @@ -192,6 +202,16 @@ With two arguments, returns all articles by the given author published in the given month of the given year. I<$month> is an integer between 1 and 12. +=item B + +=item B + +In list context, returns a list of all existing article series. Each +series is an unblessed hashref with the keys C, C, +C<Description> and C<CssClass>. + +In scalar context, returns the number of existing article series. + =back =head1 NOTES diff --git a/t/WebService-TDWTF.t b/t/WebService-TDWTF.t index 2c2d53e..74c9575 100644 --- a/t/WebService-TDWTF.t +++ b/t/WebService-TDWTF.t @@ -3,7 +3,7 @@ use strict; use warnings; use Test::RequiresInternet ('thedailywtf.com' => 80); -use Test::More tests => 14; +use Test::More tests => 16; BEGIN { use_ok('WebService::TDWTF') }; my $art = tdwtf_article; @@ -30,6 +30,11 @@ is @erik, 8, 'tdwtf_list_author \'erik-gern\''; my @sod = tdwtf_list_series 'code-sod', 5; is @sod, 5, 'tdwtf_list_series \'code-sod\', 5'; +my @series = tdwtf_series; +note 'Found ' . @series . ' series'; +cmp_ok @series, '==', scalar tdwtf_series, 'tdwtf_series scalar context'; +my ($codesod) = grep { $_->{Title} =~ /codesod/i } @series; +is $codesod->{Slug}, 'code-sod', 'tdwtf_series finds CodeSOD'; my ($last) = tdwtf_list_recent 1; ok !defined $last->NextArticle, 'last article has no next article';