File Coverage

blib/lib/Pithub.pm
Criterion Covered Total %
statement 57 57 100.0
branch 5 6 83.3
condition n/a
subroutine 25 25 100.0
pod 10 10 100.0
total 97 98 98.9


line stmt bran cond sub pod time code
1             package Pithub;
2             our $AUTHORITY = 'cpan:PLU';
3              
4             # ABSTRACT: Github v3 API
5              
6 15     15   1624111 use Moo;
  15         86947  
  15         98  
7              
8             our $VERSION = '0.01041';
9              
10 15     15   12295 use Carp qw( croak );
  15         32  
  15         673  
11 15     15   7070 use Pithub::Events ();
  15         55  
  15         494  
12 15     15   8956 use Pithub::Gists ();
  15         46  
  15         362  
13 15     15   6647 use Pithub::GitData ();
  15         56  
  15         379  
14 15     15   7417 use Pithub::Issues ();
  15         49  
  15         390  
15 15     15   6540 use Pithub::Orgs ();
  15         44  
  15         354  
16 15     15   6920 use Pithub::PullRequests ();
  15         44  
  15         404  
17 15     15   6733 use Pithub::Markdown ();
  15         45  
  15         502  
18 15     15   7568 use Pithub::Repos ();
  15         47  
  15         427  
19 15     15   6592 use Pithub::Search ();
  15         40  
  15         338  
20 15     15   6869 use Pithub::SearchV3 ();
  15         44  
  15         457  
21 15     15   6471 use Pithub::Users ();
  15         43  
  15         7375  
22              
23             extends 'Pithub::Base';
24              
25              
26             sub _validate_search_api {
27 86     86   9325 my %search_apis = map { $_ => 1 } qw(legacy v3);
  172         535  
28             croak "unknown search api '$_[0]'"
29 86 50       1698 unless exists $search_apis{ $_[0] };
30             }
31              
32              
33             has search_api => (
34             is => 'ro',
35             isa => \&_validate_search_api,
36             default => 'legacy',
37             );
38              
39             sub _search_class {
40 3     3   8 my ( $self, $search_api ) = @_;
41              
42 3         11 _validate_search_api($search_api);
43              
44 3 100       14 return $search_api eq 'legacy'
45             ? Pithub::Search::
46             : Pithub::SearchV3::;
47             }
48              
49              
50             sub events {
51 3     3 1 7163 return shift->_create_instance( Pithub::Events::, @_ );
52             }
53              
54              
55             sub gists {
56 3     3 1 5655 return shift->_create_instance( Pithub::Gists::, @_ );
57             }
58              
59              
60             sub git_data {
61 3     3 1 15497 return shift->_create_instance( Pithub::GitData::, @_ );
62             }
63              
64              
65             sub issues {
66 4     4 1 27500 return shift->_create_instance( Pithub::Issues::, @_ );
67             }
68              
69              
70             sub markdown {
71 1     1 1 1437 return shift->_create_instance( Pithub::Markdown::, @_ );
72             }
73              
74              
75             sub orgs {
76 3     3 1 30724 return shift->_create_instance( Pithub::Orgs::, @_ );
77             }
78              
79              
80             sub pull_requests {
81 9     9 1 14783 return shift->_create_instance( Pithub::PullRequests::, @_ );
82             }
83              
84              
85             sub repos {
86 62     62 1 12957 return shift->_create_instance( Pithub::Repos::, @_ );
87             }
88              
89              
90             sub search {
91 3     3 1 4161 my ( $self, %args ) = @_;
92             my $class = $self->_search_class(
93             exists $args{search_api}
94             ? delete $args{search_api}
95 3 100       22 : $self->search_api,
96             );
97 3         17 return shift->_create_instance( $class, @_ );
98             }
99              
100              
101             sub users {
102 14     14 1 41055 return shift->_create_instance( Pithub::Users::, @_ );
103             }
104              
105              
106             1;
107              
108             __END__