File Coverage

blib/lib/Acme/Free/Public/APIs.pm
Criterion Covered Total %
statement 18 36 50.0
branch 0 2 0.0
condition n/a
subroutine 6 9 66.6
pod 3 3 100.0
total 27 50 54.0


line stmt bran cond sub pod time code
1             package Acme::Free::Public::APIs;
2              
3 1     1   370342 use strict;
  1         2  
  1         47  
4 1     1   6 use warnings;
  1         2  
  1         112  
5              
6             our $VERSION = '0.9.10';
7              
8 1     1   870 use HTTP::Tiny;
  1         67267  
  1         98  
9 1     1   1158 use JSON qw/decode_json/;
  1         11971  
  1         6  
10 1     1   619 use Util::H2O::More qw/baptise d2o HTTPTiny2h2o/;
  1         8835  
  1         82  
11              
12             use constant {
13 1         310 BASEURL => "https://www.freepublicapis.com/api/",
14 1     1   6 };
  1         2  
15              
16             sub new {
17 0     0 1   my $pkg = shift;
18 0           my $self = baptise { ua => HTTP::Tiny->new }, $pkg;
19 0           return $self;
20             }
21              
22             # https://www.freepublicapis.com/api/apis
23             # https://www.freepublicapis.com/api/apis/275
24              
25             sub apis {
26 0     0 1   my $self = shift;
27 0           my $params = d2o -autoundef, { @_ };
28 0           my $URL = sprintf "%s/apis", BASEURL;
29              
30 0           my $ret = [];
31 0 0         if ($params->id) {
32 0           $URL = sprintf "%s/%d", $URL, $params->id;
33 0           my $resp = HTTPTiny2h2o $self->ua->get($URL);
34 0           $ret = d2o -autoundef, [ $resp->content ]; # preset single item in an ARRAY
35             }
36             else {
37 0           my $resp = HTTPTiny2h2o $self->ua->get($URL);
38 0           $ret = $resp->content;
39             }
40              
41 0           return $ret;
42             }
43              
44              
45             # https://www.freepublicapis.com/api/random
46              
47             sub random {
48 0     0 1   my $self = shift;
49 0           my $URL = sprintf "%s/random", BASEURL;
50 0           my $resp = HTTPTiny2h2o $self->ua->get($URL);
51 0           return $resp->content;
52             }
53              
54             1;
55              
56             __END__