File Coverage

blib/lib/Pithub/Issues.pm
Criterion Covered Total %
statement 44 44 100.0
branch 9 10 90.0
condition 2 3 66.6
subroutine 16 16 100.0
pod 9 9 100.0
total 80 82 97.5


line stmt bran cond sub pod time code
1             package Pithub::Issues;
2             our $AUTHORITY = 'cpan:PLU';
3             our $VERSION = '0.01043';
4              
5             # ABSTRACT: Github v3 Issues API
6              
7 17     17   199218 use Moo;
  17         35  
  17         101  
8 17     17   6718 use Carp qw( croak );
  17         60  
  17         1062  
9 17     17   8448 use Pithub::Issues::Assignees ();
  17         57  
  17         487  
10 17     17   8879 use Pithub::Issues::Comments ();
  17         61  
  17         512  
11 17     17   8443 use Pithub::Issues::Events ();
  17         82  
  17         686  
12 17     17   8778 use Pithub::Issues::Labels ();
  17         67  
  17         517  
13 17     17   9270 use Pithub::Issues::Milestones ();
  17         70  
  17         9529  
14             extends 'Pithub::Base';
15              
16              
17             sub assignees {
18 1     1 1 796 return shift->_create_instance( Pithub::Issues::Assignees::, @_ );
19             }
20              
21              
22             sub comments {
23 2     2 1 2445 return shift->_create_instance( Pithub::Issues::Comments::, @_ );
24             }
25              
26              
27             sub create {
28 6     6 1 29162 my ( $self, %args ) = @_;
29             croak 'Missing key in parameters: data (hashref)'
30 6 100       60 unless ref $args{data} eq 'HASH';
31 4         32 $self->_validate_user_repo_args( \%args );
32             return $self->request(
33             method => 'POST',
34             path => sprintf(
35             '/repos/%s/%s/issues', delete $args{user}, delete $args{repo}
36 4         54 ),
37             %args,
38             );
39             }
40              
41              
42             sub events {
43 1     1 1 2105 return shift->_create_instance( Pithub::Issues::Events::, @_ );
44             }
45              
46              
47             sub get {
48 4     4 1 7978 my ( $self, %args ) = @_;
49 4 100       38 croak 'Missing key in parameters: issue_id' unless $args{issue_id};
50 3         18 $self->_validate_user_repo_args( \%args );
51             return $self->request(
52             method => 'GET',
53             path => sprintf(
54             '/repos/%s/%s/issues/%s', delete $args{user}, delete $args{repo},
55             delete $args{issue_id}
56 3         43 ),
57             %args,
58             );
59             }
60              
61              
62             sub labels {
63 1     1 1 2398 return shift->_create_instance( Pithub::Issues::Labels::, @_ );
64             }
65              
66              
67             sub list {
68 5     5 1 4712 my ( $self, %args ) = @_;
69 5         27 $self->_get_user_repo_args( \%args );
70 5 50 66     58 if ( $args{user} && $args{repo} ) {
71             return $self->request(
72             method => 'GET',
73             path => sprintf(
74             '/repos/%s/%s/issues', delete $args{user}, delete $args{repo}
75 3         36 ),
76             %args,
77             );
78             }
79 2         7 return $self->request(
80             method => 'GET',
81             path => sprintf('/issues'),
82             %args,
83             );
84             }
85              
86              
87             sub milestones {
88 1     1 1 2314 return shift->_create_instance( Pithub::Issues::Milestones::, @_ );
89             }
90              
91              
92             sub update {
93 7     7 1 6883 my ( $self, %args ) = @_;
94 7 100       41 croak 'Missing key in parameters: issue_id' unless $args{issue_id};
95             croak 'Missing key in parameters: data (hashref)'
96 6 100       48 unless ref $args{data} eq 'HASH';
97 4         22 $self->_validate_user_repo_args( \%args );
98             return $self->request(
99             method => 'PATCH',
100             path => sprintf(
101             '/repos/%s/%s/issues/%s', delete $args{user}, delete $args{repo},
102             delete $args{issue_id}
103 4         46 ),
104             %args,
105             );
106             }
107              
108             1;
109              
110             __END__