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.01040';
4             # ABSTRACT: Github v3 Issues API
5              
6 17     17   155956 use Moo;
  17         27  
  17         96  
7 17     17   4478 use Carp qw( croak );
  17         63  
  17         773  
8 17     17   6509 use Pithub::Issues::Assignees;
  17         43  
  17         514  
9 17     17   6897 use Pithub::Issues::Comments;
  17         45  
  17         431  
10 17     17   6404 use Pithub::Issues::Events;
  17         39  
  17         423  
11 17     17   6793 use Pithub::Issues::Labels;
  17         67  
  17         418  
12 17     17   6903 use Pithub::Issues::Milestones;
  17         47  
  17         7403  
13             extends 'Pithub::Base';
14              
15              
16             sub assignees {
17 1     1 1 397 return shift->_create_instance('Pithub::Issues::Assignees', @_);
18             }
19              
20              
21             sub comments {
22 2     2 1 1284 return shift->_create_instance('Pithub::Issues::Comments', @_);
23             }
24              
25              
26             sub create {
27 6     6 1 13950 my ( $self, %args ) = @_;
28 6 100       51 croak 'Missing key in parameters: data (hashref)' unless ref $args{data} eq 'HASH';
29 4         26 $self->_validate_user_repo_args( \%args );
30             return $self->request(
31             method => 'POST',
32 4         49 path => sprintf( '/repos/%s/%s/issues', delete $args{user}, delete $args{repo} ),
33             %args,
34             );
35             }
36              
37              
38             sub events {
39 1     1 1 1167 return shift->_create_instance('Pithub::Issues::Events', @_);
40             }
41              
42              
43             sub get {
44 4     4 1 3084 my ( $self, %args ) = @_;
45 4 100       30 croak 'Missing key in parameters: issue_id' unless $args{issue_id};
46 3         17 $self->_validate_user_repo_args( \%args );
47             return $self->request(
48             method => 'GET',
49 3         40 path => sprintf( '/repos/%s/%s/issues/%s', delete $args{user}, delete $args{repo}, delete $args{issue_id} ),
50             %args,
51             );
52             }
53              
54              
55             sub labels {
56 1     1 1 1182 return shift->_create_instance('Pithub::Issues::Labels', @_);
57             }
58              
59              
60             sub list {
61 5     5 1 3930 my ( $self, %args ) = @_;
62 5         35 $self->_get_user_repo_args( \%args );
63 5 50 66     26 if ( $args{user} && $args{repo} ) {
64             return $self->request(
65             method => 'GET',
66 3         147 path => sprintf( '/repos/%s/%s/issues', delete $args{user}, delete $args{repo} ),
67             %args,
68             );
69             }
70 2         8 return $self->request(
71             method => 'GET',
72             path => sprintf('/issues'),
73             %args,
74             );
75             }
76              
77              
78             sub milestones {
79 1     1 1 1195 return shift->_create_instance('Pithub::Issues::Milestones', @_);
80             }
81              
82              
83             sub update {
84 7     7 1 5625 my ( $self, %args ) = @_;
85 7 100       40 croak 'Missing key in parameters: issue_id' unless $args{issue_id};
86 6 100       32 croak 'Missing key in parameters: data (hashref)' unless ref $args{data} eq 'HASH';
87 4         21 $self->_validate_user_repo_args( \%args );
88             return $self->request(
89             method => 'PATCH',
90 4         107 path => sprintf( '/repos/%s/%s/issues/%s', delete $args{user}, delete $args{repo}, delete $args{issue_id} ),
91             %args,
92             );
93             }
94              
95             1;
96              
97             __END__