File Coverage

blib/lib/Pithub.pm
Criterion Covered Total %
statement 54 54 100.0
branch 5 6 83.3
condition n/a
subroutine 24 24 100.0
pod 10 10 100.0
total 93 94 98.9


line stmt bran cond sub pod time code
1             package Pithub;
2             our $AUTHORITY = 'cpan:PLU';
3             # ABSTRACT: Github v3 API
4              
5 15     15   1353747 use Moo;
  15         73706  
  15         153  
6              
7             our $VERSION = '0.01040';
8              
9 15     15   10478 use Carp qw( croak );
  15         24  
  15         616  
10 15     15   5887 use Pithub::Events ();
  15         45  
  15         477  
11 15     15   8043 use Pithub::Gists ();
  15         42  
  15         340  
12 15     15   6071 use Pithub::GitData ();
  15         34  
  15         342  
13 15     15   6241 use Pithub::Issues ();
  15         51  
  15         351  
14 15     15   5662 use Pithub::Orgs ();
  15         43  
  15         332  
15 15     15   6291 use Pithub::PullRequests ();
  15         46  
  15         329  
16 15     15   6080 use Pithub::Repos ();
  15         47  
  15         480  
17 15     15   5918 use Pithub::Search ();
  15         37  
  15         314  
18 15     15   5608 use Pithub::SearchV3 ();
  15         43  
  15         340  
19 15     15   5466 use Pithub::Users ();
  15         43  
  15         5884  
20              
21             extends 'Pithub::Base';
22              
23              
24             sub _validate_search_api {
25 86     86   8424 my %search_apis = map { $_ => 1 } qw(legacy v3);
  172         605  
26             croak "unknown search api '$_[0]'"
27 86 50       1452 unless exists $search_apis{$_[0]};
28             }
29              
30              
31             has search_api => (
32             is => 'ro',
33             isa => \&_validate_search_api,
34             default => 'legacy',
35             );
36              
37             sub _search_class {
38 3     3   7 my ($self, $search_api) = @_;
39              
40 3         9 _validate_search_api($search_api);
41              
42 3 100       8 return $search_api eq 'legacy'
43             ? Pithub::Search::
44             : Pithub::SearchV3::;
45             }
46              
47              
48             sub events {
49 3     3 1 7674 return shift->_create_instance(Pithub::Events::, @_);
50             }
51              
52              
53             sub gists {
54 3     3 1 4741 return shift->_create_instance(Pithub::Gists::, @_);
55             }
56              
57              
58             sub git_data {
59 3     3 1 12830 return shift->_create_instance(Pithub::GitData::, @_);
60             }
61              
62              
63             sub issues {
64 4     4 1 23060 return shift->_create_instance(Pithub::Issues::, @_);
65             }
66              
67              
68             sub markdown {
69 1     1 1 1161 return shift->_create_instance(Pithub::Markdown::, @_);
70             }
71              
72              
73             sub orgs {
74 3     3 1 27257 return shift->_create_instance(Pithub::Orgs::, @_);
75             }
76              
77              
78             sub pull_requests {
79 9     9 1 13762 return shift->_create_instance(Pithub::PullRequests::, @_);
80             }
81              
82              
83             sub repos {
84 62     62 1 12218 return shift->_create_instance(Pithub::Repos::, @_);
85             }
86              
87              
88             sub search {
89 3     3 1 3460 my ($self, %args) = @_;
90             my $class = $self->_search_class(
91             exists $args{search_api}
92             ? delete $args{search_api}
93 3 100       19 : $self->search_api,
94             );
95 3         12 return shift->_create_instance($class, @_);
96             }
97              
98              
99             sub users {
100 14     14 1 38691 return shift->_create_instance(Pithub::Users::, @_);
101             }
102              
103              
104             1;
105              
106             __END__