File Coverage

blib/lib/WWW/Gitea/API/Labels.pm
Criterion Covered Total %
statement 13 46 28.2
branch 0 36 0.0
condition n/a
subroutine 5 11 45.4
pod 5 5 100.0
total 23 98 23.4


line stmt bran cond sub pod time code
1             package WWW::Gitea::API::Labels;
2              
3             # ABSTRACT: Gitea repository labels API
4              
5 3     3   17 use Moo;
  3         5  
  3         18  
6 3     3   1072 use Carp qw(croak);
  3         5  
  3         229  
7 3     3   1320 use WWW::Gitea::Label;
  3         9  
  3         110  
8 3     3   18 use namespace::clean;
  3         22  
  3         11  
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 1     1   22 '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     my ($self, $data, $owner, $repo) = @_;
36 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 0     0 1   my ($self, $owner, $repo) = @_;
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('labels.list',
49             path => { owner => $owner, repo => $repo });
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 '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__