File Coverage

blib/lib/Bintray/API/Repo.pm
Criterion Covered Total %
statement 21 47 44.6
branch 0 4 0.0
condition n/a
subroutine 7 15 46.6
pod 0 8 0.0
total 28 74 37.8


line stmt bran cond sub pod time code
1             package Bintray::API::Repo;
2              
3             #######################
4             # LOAD CORE MODULES
5             #######################
6 1     1   6 use strict;
  1         2  
  1         32  
7 1     1   5 use warnings FATAL => 'all';
  1         2  
  1         28  
8 1     1   4 use Carp qw(croak carp);
  1         2  
  1         87  
9              
10             #######################
11             # VERSION
12             #######################
13             our $VERSION = '0.02';
14              
15             #######################
16             # LOAD CPAN MODULES
17             #######################
18 1     1   4 use Params::Validate qw(validate_with :types);
  1         1  
  1         141  
19              
20 1         4 use Object::Tiny qw(
21             name
22             session
23             subject
24 1     1   4 );
  1         2  
25              
26             #######################
27             # LOAD DIST MODULES
28             #######################
29 1     1   615 use Bintray::API::Package;
  1         3  
  1         13  
30 1     1   28 use Bintray::API::Session;
  1         3  
  1         4  
31              
32             #######################
33             # PUBLIC METHODS
34             #######################
35              
36             ## Constructor
37             sub new {
38 0     0 0   my ( $class, @args ) = @_;
39              
40 0           my %opts = validate_with(
41             params => [@args],
42             spec => {
43             session => {
44             type => OBJECT,
45             isa => 'Bintray::API::Session',
46             },
47             name => {
48             type => SCALAR,
49             },
50             subject => {
51             type => OBJECT,
52             isa => 'Bintray::API::Subject',
53             },
54             },
55             );
56              
57 0           return $class->SUPER::new(%opts);
58             } ## end sub new
59              
60             ## Package Object
61             sub package {
62 0     0 0   my ( $self, @args ) = @_;
63              
64 0           my %opts = validate_with(
65             params => [@args],
66             spec => {
67             name => {
68             type => SCALAR,
69             },
70             },
71             );
72              
73 0           return Bintray::API::Package->new(
74             session => $self->session(),
75             repo => $self,
76             name => $opts{name},
77             );
78             } ## end sub package
79              
80             #######################
81             # API METHODS
82             #######################
83              
84             ## Repo Info
85             sub info {
86 0     0 0   my ( $self, @args ) = @_;
87 0           return $self->session()->talk(
88             path => join( '/', 'repos', $self->subject()->name(), $self->name() ),
89             anon => 1,
90             );
91             } ## end sub info
92              
93             ## Packages
94             sub packages {
95 0     0 0   my ( $self, @args ) = @_;
96              
97 0           my %opts = validate_with(
98             params => [@args],
99             spec => {
100             prefix => {
101             type => SCALAR,
102             default => '',
103             },
104             },
105             );
106              
107 0 0         return $self->session()->talk(
108             path =>
109             join( '/', 'repos', $self->subject()->name(), $self->name(), 'packages' ),
110             anon => 1,
111             ( $opts{prefix} ? ( query => [ { start_name => $opts{prefix} } ] ) : (), ),
112             );
113             } ## end sub packages
114              
115             ## Create Package
116             sub create_package {
117 0     0 0   my ( $self, @args ) = @_;
118              
119 0           my %opts = validate_with(
120             params => [@args],
121             spec => {
122             details => {
123             type => HASHREF,
124             },
125             },
126             );
127              
128             # Create JSON
129 0           my $json = $self->session()->json()->encode( $opts{details} );
130              
131             # POST
132 0           return $self->session()->talk(
133             method => 'POST',
134             path => join( '/', 'packages', $self->subject()->name(), $self->name(), ),
135             content => $json,
136             );
137             } ## end sub create_package
138              
139             ## Delete Package
140             sub delete_package {
141 0     0 0   my ( $self, @args ) = @_;
142              
143 0           my %opts = validate_with(
144             params => [@args],
145             spec => {
146             name => {
147             type => SCALAR,
148             },
149             },
150             );
151              
152 0           return $self->session()->talk(
153             method => 'DELETE',
154             path => join( '/',
155             'packages', $self->subject()->name(),
156             $self->name(), $opts{name}, ),
157             );
158             } ## end sub delete_package
159              
160             ## Get Webhooks
161             sub get_webhooks {
162 0     0 0   my ($self) = @_;
163 0           return $self->session->talk(
164             path => join( '/', 'webhooks', $self->subject()->name(), $self->name() ),
165             );
166             } ## end sub get_webhooks
167              
168             #######################
169             # API HELPERS
170             #######################
171              
172             ## Package name
173             sub package_names {
174 0     0 0   my ($self) = @_;
175 0 0         my $resp = $self->packages() or return;
176 0           my @packages = map { $_->{name} } @{$resp};
  0            
  0            
177 0           return @packages;
178             } ## end sub package_names
179              
180             #######################
181             1;
182              
183             __END__