File Coverage

blib/lib/Pithub/Repos/Downloads.pm
Criterion Covered Total %
statement 33 33 100.0
branch 12 12 100.0
condition n/a
subroutine 8 8 100.0
pod 5 5 100.0
total 58 58 100.0


line stmt bran cond sub pod time code
1             package Pithub::Repos::Downloads;
2             our $AUTHORITY = 'cpan:PLU';
3             our $VERSION = '0.01043';
4              
5             # ABSTRACT: Github v3 Repo Downloads API
6              
7 16     16   114 use Moo;
  16         34  
  16         106  
8 16     16   6633 use Carp qw( croak );
  16         44  
  16         1111  
9 16     16   9246 use HTTP::Request::Common qw( POST );
  16         48306  
  16         10251  
10             extends 'Pithub::Base';
11              
12              
13             sub create {
14 5     5 1 12275 my ( $self, %args ) = @_;
15             croak 'Missing key in parameters: data (hashref)'
16 5 100       44 unless ref $args{data} eq 'HASH';
17 4         31 $self->_validate_user_repo_args( \%args );
18             return $self->request(
19             method => 'POST',
20             path => sprintf(
21             '/repos/%s/%s/downloads', delete $args{user}, delete $args{repo}
22 4         56 ),
23             %args,
24             );
25             }
26              
27              
28             sub delete {
29 4     4 1 4098 my ( $self, %args ) = @_;
30 4 100       30 croak 'Missing key in parameters: download_id' unless $args{download_id};
31 3         16 $self->_validate_user_repo_args( \%args );
32             return $self->request(
33             method => 'DELETE',
34             path => sprintf(
35             '/repos/%s/%s/downloads/%s', delete $args{user},
36             delete $args{repo}, delete $args{download_id}
37 3         29 ),
38             %args,
39             );
40             }
41              
42              
43             sub get {
44 3     3 1 2581 my ( $self, %args ) = @_;
45 3 100       27 croak 'Missing key in parameters: download_id' unless $args{download_id};
46 2         10 $self->_validate_user_repo_args( \%args );
47             return $self->request(
48             method => 'GET',
49             path => sprintf(
50             '/repos/%s/%s/downloads/%s', delete $args{user},
51             delete $args{repo}, delete $args{download_id}
52 2         22 ),
53             %args,
54             );
55             }
56              
57              
58             sub list {
59 19     19 1 3324 my ( $self, %args ) = @_;
60 19         121 $self->_validate_user_repo_args( \%args );
61             return $self->request(
62             method => 'GET',
63             path => sprintf(
64             '/repos/%s/%s/downloads', delete $args{user}, delete $args{repo}
65 13         164 ),
66             %args,
67             );
68             }
69              
70              
71             sub upload {
72 4     4 1 5519 my ( $self, %args ) = @_;
73             croak 'Missing key in parameters: result (Pithub::Result object)'
74 4 100       36 unless ref $args{result} eq 'Pithub::Result';
75 3 100       23 croak 'Missing key in parameters: file' unless $args{file};
76 2         72 my $result = $args{result}->content;
77 2         123 foreach
78             my $key (qw(path acl name accesskeyid policy signature mime_type)) {
79 8 100       94 croak "Missing key in Pithub::Result content: ${key}"
80             unless grep $_ eq $key, keys %$result;
81             }
82             my %data = (
83             Content_Type => 'form-data',
84             Content => [
85             'key' => $result->{path},
86             'acl' => $result->{acl},
87             'success_action_status' => 201,
88             'Filename' => $result->{name},
89             'AWSAccessKeyId' => $result->{accesskeyid},
90             'Policy' => $result->{policy},
91             'Signature' => $result->{signature},
92             'Content-Type' => $result->{mime_type},
93 1         13 'file' => [ $args{file} ],
94             ],
95             );
96 1         9 my $request = POST $result->{s3_url}, %data;
97 1         25134 return $self->ua->request($request);
98             }
99              
100             1;
101              
102             __END__