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.01041';
4              
5             # ABSTRACT: Github v3 Repo Downloads API
6              
7 16     16   120 use Moo;
  16         30  
  16         92  
8 16     16   4915 use Carp qw( croak );
  16         34  
  16         874  
9 16     16   8741 use HTTP::Request::Common qw( POST );
  16         40430  
  16         9234  
10             extends 'Pithub::Base';
11              
12              
13             sub create {
14 5     5 1 11000 my ( $self, %args ) = @_;
15             croak 'Missing key in parameters: data (hashref)'
16 5 100       50 unless ref $args{data} eq 'HASH';
17 4         29 $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         50 ),
23             %args,
24             );
25             }
26              
27              
28             sub delete {
29 4     4 1 4143 my ( $self, %args ) = @_;
30 4 100       26 croak 'Missing key in parameters: download_id' unless $args{download_id};
31 3         15 $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         36 ),
38             %args,
39             );
40             }
41              
42              
43             sub get {
44 3     3 1 2460 my ( $self, %args ) = @_;
45 3 100       29 croak 'Missing key in parameters: download_id' unless $args{download_id};
46 2         16 $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         52 ),
53             %args,
54             );
55             }
56              
57              
58             sub list {
59 19     19 1 2355 my ( $self, %args ) = @_;
60 19         90 $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         102 ),
66             %args,
67             );
68             }
69              
70              
71             sub upload {
72 4     4 1 4329 my ( $self, %args ) = @_;
73             croak 'Missing key in parameters: result (Pithub::Result object)'
74 4 100       25 unless ref $args{result} eq 'Pithub::Result';
75 3 100       18 croak 'Missing key in parameters: file' unless $args{file};
76 2         48 my $result = $args{result}->content;
77 2         89 foreach
78             my $key (qw(path acl name accesskeyid policy signature mime_type)) {
79 8 100       64 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         11 'file' => [ $args{file} ],
94             ],
95             );
96 1         10 my $request = POST $result->{s3_url}, %data;
97 1         20495 return $self->ua->request($request);
98             }
99              
100             1;
101              
102             __END__