File Coverage

blib/lib/WWW/Hetzner/Cloud/API/Images.pm
Criterion Covered Total %
statement 30 30 100.0
branch 4 6 66.6
condition 1 2 50.0
subroutine 9 9 100.0
pod 3 3 100.0
total 47 50 94.0


line stmt bran cond sub pod time code
1             package WWW::Hetzner::Cloud::API::Images;
2             # ABSTRACT: Hetzner Cloud Images API
3              
4             our $VERSION = '0.100';
5              
6 25     25   178 use Moo;
  25         65  
  25         191  
7 25     25   9237 use Carp qw(croak);
  25         61  
  25         1801  
8 25     25   12443 use WWW::Hetzner::Cloud::Image;
  25         81  
  25         1145  
9 25     25   213 use namespace::clean;
  25         62  
  25         117  
10              
11              
12             has client => (
13             is => 'ro',
14             required => 1,
15             weak_ref => 1,
16             );
17              
18             sub _wrap {
19 10     10   17 my ($self, $data) = @_;
20 10         178 return WWW::Hetzner::Cloud::Image->new(
21             client => $self->client,
22             %$data,
23             );
24             }
25              
26             sub _wrap_list {
27 3     3   8 my ($self, $list) = @_;
28 3         6 return [ map { $self->_wrap($_) } @$list ];
  9         65  
29             }
30              
31              
32             sub list {
33 3     3 1 1428 my ($self, %params) = @_;
34              
35 3         24 my $result = $self->client->get('/images', params => \%params);
36 3   50     15 return $self->_wrap_list($result->{images} // []);
37             }
38              
39              
40             sub get {
41 1     1 1 39 my ($self, $id) = @_;
42 1 50       7 croak "Image ID required" unless $id;
43              
44 1         12 my $result = $self->client->get("/images/$id");
45 1         7 return $self->_wrap($result->{image});
46             }
47              
48              
49             sub get_by_name {
50 2     2 1 40 my ($self, $name) = @_;
51 2 50       7 croak "Name required" unless $name;
52              
53 2         4 my $images = $self->list;
54 2         22 for my $image (@$images) {
55 5 100       17 return $image if $image->name eq $name;
56             }
57 1         6 return;
58             }
59              
60              
61             1.
62              
63             __END__