File Coverage

blib/lib/Pithub/PullRequests.pm
Criterion Covered Total %
statement 46 47 97.8
branch 16 16 100.0
condition 2 2 100.0
subroutine 13 14 92.8
pod 10 10 100.0
total 87 89 97.7


line stmt bran cond sub pod time code
1             package Pithub::PullRequests;
2             our $AUTHORITY = 'cpan:PLU';
3             our $VERSION = '0.01043';
4              
5             # ABSTRACT: Github v3 Pull Requests API
6              
7 17     17   26887 use Moo;
  17         11942  
  17         121  
8 17     17   8146 use Carp qw( croak );
  17         35  
  17         1122  
9 17     17   9786 use Pithub::PullRequests::Comments ();
  17         59  
  17         626  
10 17     17   8593 use Pithub::PullRequests::Reviewers ();
  17         64  
  17         13400  
11             extends 'Pithub::Base';
12              
13              
14             sub comments {
15 1     1 1 568 return shift->_create_instance( Pithub::PullRequests::Comments::, @_ );
16             }
17              
18              
19             sub reviewers {
20 0     0 1 0 return shift->_create_instance( Pithub::PullRequests::Reviewers::, @_ );
21             }
22              
23              
24             sub commits {
25 4     4 1 16841 my ( $self, %args ) = @_;
26             croak 'Missing key in parameters: pull_request_id'
27 4 100       40 unless $args{pull_request_id};
28 3         29 $self->_validate_user_repo_args( \%args );
29             return $self->request(
30             method => 'GET',
31             path => sprintf(
32             '/repos/%s/%s/pulls/%s/commits', delete $args{user},
33             delete $args{repo}, delete $args{pull_request_id}
34 3         46 ),
35             %args,
36             );
37             }
38              
39              
40             sub create {
41 5     5 1 6090 my ( $self, %args ) = @_;
42             croak 'Missing key in parameters: data (hashref)'
43 5 100       43 unless ref $args{data} eq 'HASH';
44 4         24 $self->_validate_user_repo_args( \%args );
45             return $self->request(
46             method => 'POST',
47             path => sprintf(
48             '/repos/%s/%s/pulls', delete $args{user}, delete $args{repo}
49 4         44 ),
50             %args,
51             );
52             }
53              
54              
55             sub files {
56 4     4 1 4465 my ( $self, %args ) = @_;
57             croak 'Missing key in parameters: pull_request_id'
58 4 100       31 unless $args{pull_request_id};
59 3         16 $self->_validate_user_repo_args( \%args );
60             return $self->request(
61             method => 'GET',
62             path => sprintf(
63             '/repos/%s/%s/pulls/%s/files', delete $args{user},
64             delete $args{repo}, delete $args{pull_request_id}
65 3         40 ),
66             %args,
67             );
68             }
69              
70              
71             sub get {
72 4     4 1 4569 my ( $self, %args ) = @_;
73             croak 'Missing key in parameters: pull_request_id'
74 4 100       130 unless $args{pull_request_id};
75 3         17 $self->_validate_user_repo_args( \%args );
76             return $self->request(
77             method => 'GET',
78             path => sprintf(
79             '/repos/%s/%s/pulls/%s', delete $args{user}, delete $args{repo},
80             delete $args{pull_request_id}
81 3         38 ),
82             %args,
83             );
84             }
85              
86              
87             sub is_merged {
88 4     4 1 5385 my ( $self, %args ) = @_;
89             croak 'Missing key in parameters: pull_request_id'
90 4 100       29 unless $args{pull_request_id};
91 3         20 $self->_validate_user_repo_args( \%args );
92             return $self->request(
93             method => 'GET',
94             path => sprintf(
95             '/repos/%s/%s/pulls/%s/merge', delete $args{user},
96             delete $args{repo}, delete $args{pull_request_id}
97 3         40 ),
98             %args,
99             );
100             }
101              
102              
103             sub list {
104 14     14 1 3883 my ( $self, %args ) = @_;
105 14         68 $self->_validate_user_repo_args( \%args );
106              
107 10   100     56 $args{state} ||= 'open';
108              
109             return $self->request(
110             method => 'GET',
111             path => sprintf(
112             '/repos/%s/%s/pulls', delete $args{user}, delete $args{repo}
113             ),
114             params => {
115             per_page => 100,
116             page => delete $args{page},
117             state => delete $args{state},
118             },
119 10         114 %args,
120             );
121             }
122              
123              
124             sub merge {
125 5     5 1 5038 my ( $self, %args ) = @_;
126             croak 'Missing key in parameters: pull_request_id'
127 5 100       30 unless $args{pull_request_id};
128 4         19 $self->_validate_user_repo_args( \%args );
129             return $self->request(
130             method => 'PUT',
131             path => sprintf(
132             '/repos/%s/%s/pulls/%s/merge', delete $args{user},
133             delete $args{repo}, delete $args{pull_request_id}
134 4         44 ),
135             %args,
136             );
137             }
138              
139              
140             sub update {
141 6     6 1 5268 my ( $self, %args ) = @_;
142             croak 'Missing key in parameters: pull_request_id'
143 6 100       33 unless $args{pull_request_id};
144             croak 'Missing key in parameters: data (hashref)'
145 5 100       28 unless ref $args{data} eq 'HASH';
146 4         23 $self->_validate_user_repo_args( \%args );
147             return $self->request(
148             method => 'PATCH',
149             path => sprintf(
150             '/repos/%s/%s/pulls/%s', delete $args{user}, delete $args{repo},
151             delete $args{pull_request_id}
152 4         42 ),
153             %args,
154             );
155             }
156              
157             1;
158              
159             __END__