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 5     5   32 use Moo;
  5         8  
  5         29  
6 5     5   1799 use Carp qw(croak);
  5         14  
  5         334  
7 5     5   2223 use WWW::Gitea::Label;
  5         16  
  5         166  
8 5     5   30 use namespace::clean;
  5         7  
  5         18  
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   59 '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 3575 my ($self, $owner, $repo, %query) = @_;
46 2 50       10 croak 'owner required' unless defined $owner;
47 2 50       8 croak 'repo required' unless defined $repo;
48 2         20 my $data = $self->call_operation('labels.list',
49             path => { owner => $owner, repo => $repo }, query => \%query);
50 2 50       8 return [ map { $self->_wrap($_, $owner, $repo) } @{ $data || [] } ];
  0         0  
  2         15  
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__