File Coverage

blib/lib/WWW/Hetzner/Cloud/API/ServerTypes.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::ServerTypes;
2             # ABSTRACT: Hetzner Cloud Server Types API
3              
4             our $VERSION = '0.100';
5              
6 25     25   160 use Moo;
  25         76  
  25         169  
7 25     25   10549 use Carp qw(croak);
  25         56  
  25         1847  
8 25     25   12611 use WWW::Hetzner::Cloud::ServerType;
  25         90  
  25         1009  
9 25     25   169 use namespace::clean;
  25         41  
  25         103  
10              
11              
12             has client => (
13             is => 'ro',
14             required => 1,
15             weak_ref => 1,
16             );
17              
18             sub _wrap {
19 10     10   28 my ($self, $data) = @_;
20 10         386 return WWW::Hetzner::Cloud::ServerType->new(
21             client => $self->client,
22             %$data,
23             );
24             }
25              
26             sub _wrap_list {
27 3     3   8 my ($self, $list) = @_;
28 3         10 return [ map { $self->_wrap($_) } @$list ];
  9         2789  
29             }
30              
31              
32             sub list {
33 3     3 1 1631 my ($self, %params) = @_;
34              
35 3         32 my $result = $self->client->get('/server_types', params => \%params);
36 3   50     21 return $self->_wrap_list($result->{server_types} // []);
37             }
38              
39              
40             sub get {
41 1     1 1 35 my ($self, $id) = @_;
42 1 50       6 croak "Server Type ID required" unless $id;
43              
44 1         12 my $result = $self->client->get("/server_types/$id");
45 1         7 return $self->_wrap($result->{server_type});
46             }
47              
48              
49             sub get_by_name {
50 2     2 1 73 my ($self, $name) = @_;
51 2 50       11 croak "Name required" unless $name;
52              
53 2         8 my $types = $self->list;
54 2         103 for my $type (@$types) {
55 5 100       61 return $type if $type->name eq $name;
56             }
57 1         10 return;
58             }
59              
60              
61             1.
62              
63             __END__