File Coverage

blib/lib/WWW/Gitea/API/Milestones.pm
Criterion Covered Total %
statement 12 45 26.6
branch 0 34 0.0
condition n/a
subroutine 4 11 36.3
pod 5 5 100.0
total 21 95 22.1


line stmt bran cond sub pod time code
1             package WWW::Gitea::API::Milestones;
2              
3             # ABSTRACT: Gitea repository milestones API
4              
5 3     3   16 use Moo;
  3         4  
  3         23  
6 3     3   1037 use Carp qw(croak);
  3         6  
  3         194  
7 3     3   1137 use WWW::Gitea::Milestone;
  3         7  
  3         143  
8 3     3   21 use namespace::clean;
  3         6  
  3         12  
9              
10              
11             has client => (
12             is => 'ro',
13             required => 1,
14             weak_ref => 1,
15             );
16              
17              
18             has openapi_operations => (
19             is => 'lazy',
20             builder => sub {
21             return {
22 0     0     'milestones.list' => { method => 'GET', path => '/repos/{owner}/{repo}/milestones' },
23             'milestones.create' => { method => 'POST', path => '/repos/{owner}/{repo}/milestones' },
24             'milestones.get' => { method => 'GET', path => '/repos/{owner}/{repo}/milestones/{id}' },
25             'milestones.edit' => { method => 'PATCH', path => '/repos/{owner}/{repo}/milestones/{id}' },
26             'milestones.delete' => { method => 'DELETE', path => '/repos/{owner}/{repo}/milestones/{id}' },
27             };
28             },
29             );
30              
31              
32             with 'WWW::Gitea::Role::OpenAPI';
33              
34             sub _wrap {
35 0     0     my ($self, $data, $owner, $repo) = @_;
36 0 0         return WWW::Gitea::Milestone->new(
    0          
37             client => $self->client,
38             data => $data,
39             (defined $owner ? (owner => $owner) : ()),
40             (defined $repo ? (repo => $repo) : ()),
41             );
42             }
43              
44             sub list {
45 0     0 1   my ($self, $owner, $repo, %query) = @_;
46 0 0         croak 'owner required' unless defined $owner;
47 0 0         croak 'repo required' unless defined $repo;
48 0           my $data = $self->call_operation('milestones.list',
49             path => { owner => $owner, repo => $repo }, query => \%query);
50 0 0         return [ map { $self->_wrap($_, $owner, $repo) } @{ $data || [] } ];
  0            
  0            
51             }
52              
53              
54             sub create {
55 0     0 1   my ($self, $owner, $repo, %args) = @_;
56 0 0         croak 'owner required' unless defined $owner;
57 0 0         croak 'repo required' unless defined $repo;
58 0 0         croak 'title required' unless defined $args{title};
59 0           my $data = $self->call_operation('milestones.create',
60             path => { owner => $owner, repo => $repo }, body => \%args);
61 0           return $self->_wrap($data, $owner, $repo);
62             }
63              
64              
65             sub get {
66 0     0 1   my ($self, $owner, $repo, $id) = @_;
67 0 0         croak 'owner required' unless defined $owner;
68 0 0         croak 'repo required' unless defined $repo;
69 0 0         croak 'id required' unless defined $id;
70 0           my $data = $self->call_operation('milestones.get',
71             path => { owner => $owner, repo => $repo, id => $id });
72 0           return $self->_wrap($data, $owner, $repo);
73             }
74              
75              
76             sub edit {
77 0     0 1   my ($self, $owner, $repo, $id, %args) = @_;
78 0 0         croak 'owner required' unless defined $owner;
79 0 0         croak 'repo required' unless defined $repo;
80 0 0         croak 'id required' unless defined $id;
81 0           my $data = $self->call_operation('milestones.edit',
82             path => { owner => $owner, repo => $repo, id => $id }, body => \%args);
83 0           return $self->_wrap($data, $owner, $repo);
84             }
85              
86              
87             sub delete {
88 0     0 1   my ($self, $owner, $repo, $id) = @_;
89 0 0         croak 'owner required' unless defined $owner;
90 0 0         croak 'repo required' unless defined $repo;
91 0 0         croak 'id required' unless defined $id;
92 0           return $self->call_operation('milestones.delete',
93             path => { owner => $owner, repo => $repo, id => $id });
94             }
95              
96              
97              
98             1;
99              
100             __END__