File Coverage

blib/lib/Pithub/Gists.pm
Criterion Covered Total %
statement 41 41 100.0
branch 24 24 100.0
condition n/a
subroutine 13 13 100.0
pod 10 10 100.0
total 88 88 100.0


line stmt bran cond sub pod time code
1             package Pithub::Gists;
2             our $AUTHORITY = 'cpan:PLU';
3             our $VERSION = '0.01041';
4              
5             # ABSTRACT: Github v3 Gists API
6              
7 16     16   11609 use Moo;
  16         12701  
  16         104  
8 16     16   6644 use Carp qw( croak );
  16         37  
  16         816  
9 16     16   8222 use Pithub::Gists::Comments ();
  16         71  
  16         10974  
10             extends 'Pithub::Base';
11              
12              
13             sub comments {
14 1     1 1 513 return shift->_create_instance( Pithub::Gists::Comments::, @_ );
15             }
16              
17              
18             sub create {
19 3     3 1 10189 my ( $self, %args ) = @_;
20             croak 'Missing key in parameters: data (hashref)'
21 3 100       59 unless ref $args{data} eq 'HASH';
22 2         36 return $self->request(
23             method => 'POST',
24             path => '/gists',
25             %args,
26             );
27             }
28              
29              
30             sub delete {
31 4     4 1 3727 my ( $self, %args ) = @_;
32 4 100       27 croak 'Missing key in parameters: gist_id' unless $args{gist_id};
33             return $self->request(
34             method => 'DELETE',
35 3         28 path => sprintf( '/gists/%s', delete $args{gist_id} ),
36             %args,
37             );
38             }
39              
40              
41             sub fork {
42 3     3 1 2412 my ( $self, %args ) = @_;
43 3 100       25 croak 'Missing key in parameters: gist_id' unless $args{gist_id};
44             return $self->request(
45             method => 'POST',
46 2         21 path => sprintf( '/gists/%s/forks', delete $args{gist_id} ),
47             %args,
48             );
49             }
50              
51              
52             sub get {
53 3     3 1 2382 my ( $self, %args ) = @_;
54 3 100       20 croak 'Missing key in parameters: gist_id' unless $args{gist_id};
55             return $self->request(
56             method => 'GET',
57 2         22 path => sprintf( '/gists/%s', delete $args{gist_id} ),
58             %args,
59             );
60             }
61              
62              
63             sub is_starred {
64 4     4 1 3687 my ( $self, %args ) = @_;
65 4 100       25 croak 'Missing key in parameters: gist_id' unless $args{gist_id};
66             return $self->request(
67             method => 'GET',
68 3         33 path => sprintf( '/gists/%s/star', delete $args{gist_id} ),
69             %args,
70             );
71             }
72              
73              
74             sub list {
75 6     6 1 9833 my ( $self, %args ) = @_;
76 6 100       31 if ( my $user = delete $args{user} ) {
    100          
    100          
77 2         22 return $self->request(
78             method => 'GET',
79             path => sprintf( '/users/%s/gists', $user ),
80             %args,
81             );
82             }
83             elsif ( delete $args{starred} ) {
84 2         9 return $self->request(
85             method => 'GET',
86             path => '/gists/starred',
87             %args,
88             );
89             }
90             elsif ( delete $args{public} ) {
91 1         6 return $self->request(
92             method => 'GET',
93             path => '/gists/public',
94             %args,
95             );
96             }
97 1         5 return $self->request(
98             method => 'GET',
99             path => '/gists',
100             %args,
101             );
102             }
103              
104              
105             sub star {
106 4     4 1 3728 my ( $self, %args ) = @_;
107 4 100       25 croak 'Missing key in parameters: gist_id' unless $args{gist_id};
108             return $self->request(
109             method => 'PUT',
110 3         28 path => sprintf( '/gists/%s/star', delete $args{gist_id} ),
111             %args,
112             );
113             }
114              
115              
116             sub unstar {
117 4     4 1 3674 my ( $self, %args ) = @_;
118 4 100       22 croak 'Missing key in parameters: gist_id' unless $args{gist_id};
119             return $self->request(
120             method => 'DELETE',
121 3         29 path => sprintf( '/gists/%s/star', delete $args{gist_id} ),
122             %args,
123             );
124             }
125              
126              
127             sub update {
128 5     5 1 4572 my ( $self, %args ) = @_;
129 5 100       29 croak 'Missing key in parameters: gist_id' unless $args{gist_id};
130             croak 'Missing key in parameters: data (hashref)'
131 4 100       23 unless ref $args{data} eq 'HASH';
132             return $self->request(
133             method => 'PATCH',
134 3         27 path => sprintf( '/gists/%s', delete $args{gist_id} ),
135             %args,
136             );
137             }
138              
139             1;
140              
141             __END__