File Coverage

blib/lib/WWW/Gitea/API/Labels.pm
Criterion Covered Total %
statement 19 46 41.3
branch 3 36 8.3
condition n/a
subroutine 6 11 54.5
pod 5 5 100.0
total 33 98 33.6


line stmt bran cond sub pod time code
1             package WWW::Gitea::API::Labels;
2              
3             # ABSTRACT: Gitea repository labels API
4              
5 4     4   21 use Moo;
  4         7  
  4         18  
6 4     4   1101 use Carp qw(croak);
  4         8  
  4         242  
7 4     4   1545 use WWW::Gitea::Label;
  4         11  
  4         119  
8 4     4   21 use namespace::clean;
  4         4  
  4         13  
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 2     2   41 'labels.list' => { method => 'GET', path => '/repos/{owner}/{repo}/labels' },
23             'labels.create' => { method => 'POST', path => '/repos/{owner}/{repo}/labels' },
24             'labels.get' => { method => 'GET', path => '/repos/{owner}/{repo}/labels/{id}' },
25             'labels.edit' => { method => 'PATCH', path => '/repos/{owner}/{repo}/labels/{id}' },
26             'labels.delete' => { method => 'DELETE', path => '/repos/{owner}/{repo}/labels/{id}' },
27             };
28             },
29             );
30              
31              
32             with 'WWW::Gitea::Role::OpenAPI';
33              
34             sub _wrap {
35 0     0   0 my ($self, $data, $owner, $repo) = @_;
36 0 0       0 return WWW::Gitea::Label->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 2     2 1 2104 my ($self, $owner, $repo, %query) = @_;
46 2 50       8 croak 'owner required' unless defined $owner;
47 2 50       6 croak 'repo required' unless defined $repo;
48 2         14 my $data = $self->call_operation('labels.list',
49             path => { owner => $owner, repo => $repo }, query => \%query);
50 2 50       6 return [ map { $self->_wrap($_, $owner, $repo) } @{ $data || [] } ];
  0         0  
  2         8  
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 'name required' unless defined $args{name};
59 0 0         croak 'color required' unless defined $args{color};
60 0           my $data = $self->call_operation('labels.create',
61             path => { owner => $owner, repo => $repo }, body => \%args);
62 0           return $self->_wrap($data, $owner, $repo);
63             }
64              
65              
66             sub get {
67 0     0 1   my ($self, $owner, $repo, $id) = @_;
68 0 0         croak 'owner required' unless defined $owner;
69 0 0         croak 'repo required' unless defined $repo;
70 0 0         croak 'id required' unless defined $id;
71 0           my $data = $self->call_operation('labels.get',
72             path => { owner => $owner, repo => $repo, id => $id });
73 0           return $self->_wrap($data, $owner, $repo);
74             }
75              
76              
77             sub edit {
78 0     0 1   my ($self, $owner, $repo, $id, %args) = @_;
79 0 0         croak 'owner required' unless defined $owner;
80 0 0         croak 'repo required' unless defined $repo;
81 0 0         croak 'id required' unless defined $id;
82 0           my $data = $self->call_operation('labels.edit',
83             path => { owner => $owner, repo => $repo, id => $id }, body => \%args);
84 0           return $self->_wrap($data, $owner, $repo);
85             }
86              
87              
88             sub delete {
89 0     0 1   my ($self, $owner, $repo, $id) = @_;
90 0 0         croak 'owner required' unless defined $owner;
91 0 0         croak 'repo required' unless defined $repo;
92 0 0         croak 'id required' unless defined $id;
93 0           return $self->call_operation('labels.delete',
94             path => { owner => $owner, repo => $repo, id => $id });
95             }
96              
97              
98              
99             1;
100              
101             __END__