File Coverage

blib/lib/Pithub/Repos.pm
Criterion Covered Total %
statement 119 119 100.0
branch 15 18 83.3
condition n/a
subroutine 47 47 100.0
pod 29 29 100.0
total 210 213 98.5


line stmt bran cond sub pod time code
1             package Pithub::Repos;
2             our $AUTHORITY = 'cpan:PLU';
3              
4             # ABSTRACT: Github v3 Repos API
5              
6 16     16   296085 use Moo;
  16         36  
  16         106  
7              
8             our $VERSION = '0.01043';
9              
10 16     16   6764 use Carp qw( croak );
  16         33  
  16         1135  
11 16     16   761 use Pithub::Issues ();
  16         34  
  16         399  
12 16     16   490 use Pithub::Markdown ();
  16         41  
  16         362  
13 16     16   520 use Pithub::PullRequests ();
  16         58  
  16         344  
14 16     16   7777 use Pithub::Repos::Actions ();
  16         55  
  16         520  
15 16     16   8321 use Pithub::Repos::Collaborators ();
  16         75  
  16         453  
16 16     16   8564 use Pithub::Repos::Commits ();
  16         65  
  16         493  
17 16     16   8473 use Pithub::Repos::Contents ();
  16         64  
  16         474  
18 16     16   8739 use Pithub::Repos::Downloads ();
  16         67  
  16         500  
19 16     16   8468 use Pithub::Repos::Forks ();
  16         62  
  16         449  
20 16     16   8451 use Pithub::Repos::Hooks ();
  16         65  
  16         499  
21 16     16   8187 use Pithub::Repos::Keys ();
  16         69  
  16         451  
22 16     16   8453 use Pithub::Repos::Releases ();
  16         65  
  16         507  
23 16     16   8484 use Pithub::Repos::Starring ();
  16         67  
  16         513  
24 16     16   8280 use Pithub::Repos::Stats ();
  16         92  
  16         459  
25 16     16   8302 use Pithub::Repos::Statuses ();
  16         61  
  16         475  
26 16     16   8052 use Pithub::Repos::Watching ();
  16         64  
  16         25444  
27              
28             extends 'Pithub::Base';
29              
30              
31             sub actions {
32 1     1 1 527 return shift->_create_instance( Pithub::Repos::Actions::, @_ );
33             }
34              
35              
36             sub branch {
37 3     3 1 16616 my ( $self, %args ) = @_;
38             croak 'Missing key in parameters: branch (string)'
39 3 100       33 unless defined $args{branch};
40 2         20 $self->_validate_user_repo_args( \%args );
41             return $self->request(
42             method => 'GET',
43             path => sprintf(
44             '/repos/%s/%s/branches/%s', delete $args{user},
45             delete $args{repo},
46             delete $args{branch},
47 2         29 ),
48             %args,
49             );
50             }
51              
52              
53             sub branches {
54 9     9 1 1824 my ( $self, %args ) = @_;
55 9         42 $self->_validate_user_repo_args( \%args );
56             return $self->request(
57             method => 'GET',
58             path => sprintf(
59             '/repos/%s/%s/branches', delete $args{user}, delete $args{repo}
60 9         67 ),
61             %args,
62             );
63             }
64              
65              
66             sub rename_branch {
67 2     2 1 1921 my ( $self, %args ) = @_;
68 2 50       13 croak 'Missing parameters: branch' unless $args{branch};
69             croak 'Missing key in parameters: data (hashref)'
70 2 50       58 unless ref $args{data} eq 'HASH';
71 2         14 $self->_validate_user_repo_args( \%args );
72             return $self->request(
73             method => 'POST',
74             path => sprintf(
75             '/repos/%s/%s/branches/%s/rename', delete $args{user},
76             delete $args{repo}, delete $args{branch}
77 2         29 ),
78             %args,
79             );
80             }
81              
82              
83             sub merge_branch {
84 2     2 1 1860 my ( $self, %args ) = @_;
85             croak 'Missing key in parameters: data (hashref)'
86 2 50       15 unless ref $args{data} eq 'HASH';
87 2         14 $self->_validate_user_repo_args( \%args );
88             return $self->request(
89             method => 'POST',
90             path => sprintf(
91             '/repos/%s/%s/merges', delete $args{user}, delete $args{repo}
92 2         24 ),
93             %args,
94             );
95             }
96              
97              
98             sub collaborators {
99 13     13 1 2814 return shift->_create_instance( Pithub::Repos::Collaborators::, @_ );
100             }
101              
102              
103             sub commits {
104 13     13 1 1996 return shift->_create_instance( Pithub::Repos::Commits::, @_ );
105             }
106              
107              
108             sub contents {
109 1     1 1 1297 return shift->_create_instance( Pithub::Repos::Contents::, @_ );
110             }
111              
112              
113             sub contributors {
114 9     9 1 1913 my ( $self, %args ) = @_;
115 9         38 $self->_validate_user_repo_args( \%args );
116             return $self->request(
117             method => 'GET',
118             path => sprintf(
119             '/repos/%s/%s/contributors', delete $args{user},
120             delete $args{repo}
121 9         59 ),
122             %args,
123             );
124             }
125              
126              
127             sub create {
128 6     6 1 10376 my ( $self, %args ) = @_;
129             croak 'Missing key in parameters: data (hashref)'
130 6 100       50 unless ref $args{data} eq 'HASH';
131 5 100       24 if ( my $org = delete $args{org} ) {
132 3         28 return $self->request(
133             method => 'POST',
134             path => sprintf( '/orgs/%s/repos', $org ),
135             %args,
136             );
137             }
138             else {
139 2         21 return $self->request(
140             method => 'POST',
141             path => '/user/repos',
142             %args,
143             );
144             }
145             }
146              
147              
148             sub delete {
149 4     4 1 3871 my ( $self, %args ) = @_;
150 4         26 $self->_validate_user_repo_args( \%args );
151             return $self->request(
152             method => 'DELETE',
153             path =>
154 2         16 sprintf( '/repos/%s/%s', delete $args{user}, delete $args{repo} ),
155             %args,
156             );
157             }
158              
159              
160             sub downloads {
161 13     13 1 3180 return shift->_create_instance( Pithub::Repos::Downloads::, @_ );
162             }
163              
164              
165             sub forks {
166 13     13 1 2568 return shift->_create_instance( Pithub::Repos::Forks::, @_ );
167             }
168              
169              
170             sub get {
171 2     2 1 2080 my ( $self, %args ) = @_;
172 2         14 $self->_validate_user_repo_args( \%args );
173             return $self->request(
174             method => 'GET',
175             path =>
176 2         22 sprintf( '/repos/%s/%s', delete $args{user}, delete $args{repo} ),
177             %args,
178             );
179             }
180              
181              
182             sub hooks {
183 1     1 1 1317 return shift->_create_instance( Pithub::Repos::Hooks::, @_ );
184             }
185              
186              
187             sub issues {
188 1     1 1 1329 return shift->_create_instance( Pithub::Issues::, @_ );
189             }
190              
191              
192             sub keys {
193 13     13 1 2018 return shift->_create_instance( Pithub::Repos::Keys::, @_ );
194             }
195              
196              
197             sub languages {
198 9     9 1 1816 my ( $self, %args ) = @_;
199 9         36 $self->_validate_user_repo_args( \%args );
200             return $self->request(
201             method => 'GET',
202             path => sprintf(
203             '/repos/%s/%s/languages', delete $args{user}, delete $args{repo}
204 9         61 ),
205             %args,
206             );
207             }
208              
209              
210             sub list {
211 5     5 1 13932 my ( $self, %args ) = @_;
212 5 100       30 if ( my $user = delete $args{user} ) {
    100          
213 2         20 return $self->request(
214             method => 'GET',
215             path => sprintf( '/users/%s/repos', $user ),
216             %args,
217             );
218             }
219             elsif ( my $org = delete $args{org} ) {
220 1         9 return $self->request(
221             method => 'GET',
222             path => sprintf( '/orgs/%s/repos', $org ),
223             %args
224             );
225             }
226             else {
227 2         12 return $self->request(
228             method => 'GET',
229             path => '/user/repos',
230             %args,
231             );
232             }
233             }
234              
235              
236             sub markdown {
237 2     2 1 1409 my $self = shift;
238 2         40 return $self->_create_instance(
239             Pithub::Markdown::,
240             mode => 'gfm',
241             context => sprintf( '%s/%s', $self->user, $self->repo ),
242             @_
243             );
244             }
245              
246              
247             sub pull_requests {
248 1     1 1 1460 return shift->_create_instance( Pithub::PullRequests::, @_ );
249             }
250              
251              
252             sub releases {
253 3     3 1 75154 return shift->_create_instance( Pithub::Repos::Releases::, @_ );
254             }
255              
256              
257             sub starring {
258 1     1 1 2550 return shift->_create_instance( Pithub::Repos::Starring::, @_ );
259             }
260              
261              
262             sub stats {
263 1     1 1 2550 return shift->_create_instance( Pithub::Repos::Stats::, @_ );
264             }
265              
266              
267             sub statuses {
268 1     1 1 1319 return shift->_create_instance( Pithub::Repos::Statuses::, @_ );
269             }
270              
271              
272             sub tags {
273 9     9 1 1722 my ( $self, %args ) = @_;
274 9         37 $self->_validate_user_repo_args( \%args );
275             return $self->request(
276             method => 'GET',
277             path => sprintf(
278             '/repos/%s/%s/tags', delete $args{user}, delete $args{repo}
279 9         56 ),
280             %args,
281             );
282             }
283              
284              
285             sub teams {
286 9     9 1 1888 my ( $self, %args ) = @_;
287 9         33 $self->_validate_user_repo_args( \%args );
288             return $self->request(
289             method => 'GET',
290             path => sprintf(
291             '/repos/%s/%s/teams', delete $args{user}, delete $args{repo}
292 9         55 ),
293             %args,
294             );
295             }
296              
297              
298             sub update {
299 4     4 1 4782 my ( $self, %args ) = @_;
300             croak 'Missing key in parameters: data (hashref)'
301 4 100       41 unless ref $args{data} eq 'HASH';
302 3         17 $self->_validate_user_repo_args( \%args );
303             return $self->request(
304             method => 'PATCH',
305             path =>
306 3         29 sprintf( '/repos/%s/%s', delete $args{user}, delete $args{repo} ),
307             %args,
308             );
309             }
310              
311              
312             sub watching {
313 13     13 1 2059 return shift->_create_instance( Pithub::Repos::Watching::, @_ );
314             }
315              
316             1;
317              
318             __END__