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 14     14   1428023 use Moo;
  14         45708  
  14         88  
6              
7             our $VERSION = '0.01039';
8              
9 14     14   8153 use Carp qw( croak );
  14         28  
  14         578  
10 14     14   6022 use Pithub::Events ();
  14         44  
  14         452  
11 14     14   7429 use Pithub::Gists ();
  14         41  
  14         319  
12 14     14   5406 use Pithub::GitData ();
  14         36  
  14         283  
13 14     14   5713 use Pithub::Issues ();
  14         48  
  14         316  
14 14     14   5085 use Pithub::Orgs ();
  14         54  
  14         305  
15 14     14   5799 use Pithub::PullRequests ();
  14         43  
  14         304  
16 14     14   5784 use Pithub::Repos ();
  14         42  
  14         361  
17 14     14   5877 use Pithub::Search ();
  14         36  
  14         290  
18 14     14   4933 use Pithub::SearchV3 ();
  14         37  
  14         274  
19 14     14   5065 use Pithub::Users ();
  14         38  
  14         5446  
20              
21             extends 'Pithub::Base';
22              
23              
24             sub _validate_search_api {
25 86     86   8430 my %search_apis = map { $_ => 1 } qw(legacy v3);
  172         559  
26             croak "unknown search api '$_[0]'"
27 86 50       1445 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   13 my ($self, $search_api) = @_;
39              
40 3         16 _validate_search_api($search_api);
41              
42 3 100       16 return $search_api eq 'legacy'
43             ? Pithub::Search::
44             : Pithub::SearchV3::;
45             }
46              
47              
48             sub events {
49 3     3 1 9089 return shift->_create_instance(Pithub::Events::, @_);
50             }
51              
52              
53             sub gists {
54 3     3 1 5339 return shift->_create_instance(Pithub::Gists::, @_);
55             }
56              
57              
58             sub git_data {
59 3     3 1 13904 return shift->_create_instance(Pithub::GitData::, @_);
60             }
61              
62              
63             sub issues {
64 4     4 1 24187 return shift->_create_instance(Pithub::Issues::, @_);
65             }
66              
67              
68             sub markdown {
69 1     1 1 1569 return shift->_create_instance(Pithub::Markdown::, @_);
70             }
71              
72              
73             sub orgs {
74 3     3 1 27286 return shift->_create_instance(Pithub::Orgs::, @_);
75             }
76              
77              
78             sub pull_requests {
79 9     9 1 13095 return shift->_create_instance(Pithub::PullRequests::, @_);
80             }
81              
82              
83             sub repos {
84 62     62 1 12381 return shift->_create_instance(Pithub::Repos::, @_);
85             }
86              
87              
88             sub search {
89 3     3 1 4621 my ($self, %args) = @_;
90             my $class = $self->_search_class(
91             exists $args{search_api}
92             ? delete $args{search_api}
93 3 100       29 : $self->search_api,
94             );
95 3         20 return shift->_create_instance($class, @_);
96             }
97              
98              
99             sub users {
100 14     14 1 38382 return shift->_create_instance(Pithub::Users::, @_);
101             }
102              
103              
104             1;
105              
106             __END__