File Coverage

blib/lib/Pithub/Issues/Labels.pm
Criterion Covered Total %
statement 45 45 100.0
branch 26 26 100.0
condition n/a
subroutine 10 10 100.0
pod 8 8 100.0
total 89 89 100.0


line stmt bran cond sub pod time code
1             package Pithub::Issues::Labels;
2             our $AUTHORITY = 'cpan:PLU';
3             our $VERSION = '0.01041';
4              
5             # ABSTRACT: Github v3 Issue Labels API
6              
7 17     17   183 use Moo;
  17         34  
  17         99  
8 17     17   5173 use Carp qw( croak );
  17         65  
  17         15406  
9             extends 'Pithub::Base';
10              
11              
12             sub add {
13 6     6 1 10104 my ( $self, %args ) = @_;
14 6 100       32 croak 'Missing key in parameters: issue_id' unless $args{issue_id};
15             croak 'Missing key in parameters: data (arrayref)'
16 5 100       38 unless ref $args{data} eq 'ARRAY';
17 3         19 $self->_validate_user_repo_args( \%args );
18             return $self->request(
19             method => 'POST',
20             path => sprintf(
21             '/repos/%s/%s/issues/%s/labels', delete $args{user},
22             delete $args{repo}, delete $args{issue_id}
23 3         45 ),
24             %args,
25             );
26             }
27              
28              
29             sub create {
30 5     5 1 4059 my ( $self, %args ) = @_;
31             croak 'Missing key in parameters: data (hashref)'
32 5 100       44 unless ref $args{data} eq 'HASH';
33 3         19 $self->_validate_user_repo_args( \%args );
34             return $self->request(
35             method => 'POST',
36             path => sprintf(
37             '/repos/%s/%s/labels', delete $args{user}, delete $args{repo}
38 3         35 ),
39             %args,
40             );
41             }
42              
43              
44             sub delete {
45 4     4 1 3271 my ( $self, %args ) = @_;
46 4 100       24 croak 'Missing key in parameters: label' unless $args{label};
47 3         16 $self->_validate_user_repo_args( \%args );
48             return $self->request(
49             method => 'DELETE',
50             path => sprintf(
51             '/repos/%s/%s/labels/%s', delete $args{user}, delete $args{repo},
52             delete $args{label}
53 3         35 ),
54             %args,
55             );
56             }
57              
58              
59             sub get {
60 3     3 1 2137 my ( $self, %args ) = @_;
61 3 100       23 croak 'Missing key in parameters: label' unless $args{label};
62 2         10 $self->_validate_user_repo_args( \%args );
63             return $self->request(
64             method => 'GET',
65             path => sprintf(
66             '/repos/%s/%s/labels/%s', delete $args{user}, delete $args{repo},
67             delete $args{label}
68 2         27 ),
69             %args,
70             );
71             }
72              
73              
74             sub list {
75 4     4 1 5173 my ( $self, %args ) = @_;
76 4         31 $self->_validate_user_repo_args( \%args );
77 4 100       39 if ( my $milestone_id = delete $args{milestone_id} ) {
    100          
78             return $self->request(
79             method => 'GET',
80             path => sprintf(
81             '/repos/%s/%s/milestones/%s/labels', delete $args{user},
82 2         28 delete $args{repo}, $milestone_id
83             ),
84             %args,
85             );
86             }
87             elsif ( my $issue_id = delete $args{issue_id} ) {
88             return $self->request(
89             method => 'GET',
90             path => sprintf(
91             '/repos/%s/%s/issues/%s/labels', delete $args{user},
92 1         10 delete $args{repo}, $issue_id
93             ),
94             %args
95             );
96             }
97             return $self->request(
98             method => 'GET',
99             path => sprintf(
100             '/repos/%s/%s/labels', delete $args{user}, delete $args{repo}
101 1         10 ),
102             %args,
103             );
104             }
105              
106              
107             sub remove {
108 6     6 1 6040 my ( $self, %args ) = @_;
109 6         33 $self->_validate_user_repo_args( \%args );
110 6 100       50 croak 'Missing key in parameters: issue_id' unless $args{issue_id};
111 5 100       17 if ( my $label = delete $args{label} ) {
112             return $self->request(
113             method => 'DELETE',
114             path => sprintf(
115             '/repos/%s/%s/issues/%s/labels/%s', delete $args{user},
116 3         45 delete $args{repo}, delete $args{issue_id}, $label
117             ),
118             %args,
119             );
120             }
121             return $self->request(
122             method => 'DELETE',
123             path => sprintf(
124             '/repos/%s/%s/issues/%s/labels', delete $args{user},
125             delete $args{repo}, delete $args{issue_id}
126 2         23 ),
127             %args,
128             );
129             }
130              
131              
132             sub replace {
133 6     6 1 4803 my ( $self, %args ) = @_;
134 6 100       41 croak 'Missing key in parameters: issue_id' unless $args{issue_id};
135             croak 'Missing key in parameters: data (arrayref)'
136 5 100       36 unless ref $args{data} eq 'ARRAY';
137 3         17 $self->_validate_user_repo_args( \%args );
138             return $self->request(
139             method => 'PUT',
140             path => sprintf(
141             '/repos/%s/%s/issues/%s/labels', delete $args{user},
142             delete $args{repo}, delete $args{issue_id}
143 3         43 ),
144             %args,
145             );
146             }
147              
148              
149             sub update {
150 5     5 1 4073 my ( $self, %args ) = @_;
151 5 100       30 croak 'Missing key in parameters: label' unless $args{label};
152             croak 'Missing key in parameters: data (hashref)'
153 4 100       26 unless ref $args{data} eq 'HASH';
154 3         17 $self->_validate_user_repo_args( \%args );
155             return $self->request(
156             method => 'PATCH',
157             path => sprintf(
158             '/repos/%s/%s/labels/%s', delete $args{user}, delete $args{repo},
159             delete $args{label}
160 3         38 ),
161             %args,
162             );
163             }
164              
165             1;
166              
167             __END__