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   2214323 use Moo;
  15         56218  
  15         111  
7              
8             our $VERSION = '0.01043';
9              
10 15     15   13852 use Carp qw( croak );
  15         49  
  15         890  
11 15     15   7880 use Pithub::Events ();
  15         57  
  15         583  
12 15     15   10732 use Pithub::Gists ();
  15         56  
  15         468  
13 15     15   7233 use Pithub::GitData ();
  15         63  
  15         440  
14 15     15   8290 use Pithub::Issues ();
  15         96  
  15         477  
15 15     15   7318 use Pithub::Orgs ();
  15         60  
  15         472  
16 15     15   8440 use Pithub::PullRequests ();
  15         60  
  15         475  
17 15     15   7675 use Pithub::Markdown ();
  15         60  
  15         518  
18 15     15   8868 use Pithub::Repos ();
  15         74  
  15         537  
19 15     15   8110 use Pithub::Search ();
  15         60  
  15         465  
20 15     15   8149 use Pithub::SearchV3 ();
  15         60  
  15         459  
21 15     15   7295 use Pithub::Users ();
  15         60  
  15         8339  
22              
23             extends 'Pithub::Base';
24              
25              
26             sub _validate_search_api {
27 86     86   9369 my %search_apis = map { $_ => 1 } qw(legacy v3);
  172         673  
28             croak "unknown search api '$_[0]'"
29 86 50       1628 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         12 _validate_search_api($search_api);
43              
44 3 100       15 return $search_api eq 'legacy'
45             ? Pithub::Search::
46             : Pithub::SearchV3::;
47             }
48              
49              
50             sub events {
51 3     3 1 7984 return shift->_create_instance( Pithub::Events::, @_ );
52             }
53              
54              
55             sub gists {
56 3     3 1 6390 return shift->_create_instance( Pithub::Gists::, @_ );
57             }
58              
59              
60             sub git_data {
61 3     3 1 17566 return shift->_create_instance( Pithub::GitData::, @_ );
62             }
63              
64              
65             sub issues {
66 4     4 1 40520 return shift->_create_instance( Pithub::Issues::, @_ );
67             }
68              
69              
70             sub markdown {
71 1     1 1 2418 return shift->_create_instance( Pithub::Markdown::, @_ );
72             }
73              
74              
75             sub orgs {
76 3     3 1 50040 return shift->_create_instance( Pithub::Orgs::, @_ );
77             }
78              
79              
80             sub pull_requests {
81 9     9 1 22057 return shift->_create_instance( Pithub::PullRequests::, @_ );
82             }
83              
84              
85             sub repos {
86 62     62 1 18830 return shift->_create_instance( Pithub::Repos::, @_ );
87             }
88              
89              
90             sub search {
91 3     3 1 3987 my ( $self, %args ) = @_;
92             my $class = $self->_search_class(
93             exists $args{search_api}
94             ? delete $args{search_api}
95 3 100       21 : $self->search_api,
96             );
97 3         15 return shift->_create_instance( $class, @_ );
98             }
99              
100              
101             sub users {
102 14     14 1 59344 return shift->_create_instance( Pithub::Users::, @_ );
103             }
104              
105              
106             1;
107              
108             __END__