File Coverage

blib/lib/WWW/Hetzner/Robot/API/Keys.pm
Criterion Covered Total %
statement 20 32 62.5
branch 0 8 0.0
condition 1 2 50.0
subroutine 7 10 70.0
pod 4 4 100.0
total 32 56 57.1


line stmt bran cond sub pod time code
1             package WWW::Hetzner::Robot::API::Keys;
2             # ABSTRACT: Hetzner Robot SSH Keys API
3              
4             our $VERSION = '0.100';
5              
6 24     24   163 use Moo;
  24         51  
  24         158  
7 24     24   9703 use Carp qw(croak);
  24         79  
  24         1836  
8 24     24   12262 use WWW::Hetzner::Robot::Key;
  24         117  
  24         967  
9 24     24   180 use namespace::clean;
  24         47  
  24         118  
10              
11              
12             has client => (
13             is => 'ro',
14             required => 1,
15             weak_ref => 1,
16             );
17              
18             sub _wrap {
19 2     2   5 my ($self, $data) = @_;
20 2         51 return WWW::Hetzner::Robot::Key->new(
21             client => $self->client,
22             %$data,
23             );
24             }
25              
26             sub _wrap_list {
27 1     1   4 my ($self, $list) = @_;
28 1         3 return [ map { $self->_wrap($_->{key}) } @$list ];
  2         2335  
29             }
30              
31             sub list {
32 1     1 1 1595 my ($self) = @_;
33 1         44 my $result = $self->client->get('/key');
34 1   50     10 return $self->_wrap_list($result // []);
35             }
36              
37              
38             sub get {
39 0     0 1   my ($self, $fingerprint) = @_;
40 0 0         croak "Fingerprint required" unless $fingerprint;
41 0           my $result = $self->client->get("/key/$fingerprint");
42 0           return $self->_wrap($result->{key});
43             }
44              
45              
46             sub create {
47 0     0 1   my ($self, %params) = @_;
48 0 0         croak "name required" unless $params{name};
49 0 0         croak "data required" unless $params{data};
50              
51             my $result = $self->client->post('/key', {
52             name => $params{name},
53             data => $params{data},
54 0           });
55 0           return $self->_wrap($result->{key});
56             }
57              
58              
59             sub delete {
60 0     0 1   my ($self, $fingerprint) = @_;
61 0 0         croak "Fingerprint required" unless $fingerprint;
62 0           return $self->client->delete("/key/$fingerprint");
63             }
64              
65              
66              
67             1.
68              
69             __END__