File Coverage

blib/lib/WWW/Hetzner/Robot/API/IPs.pm
Criterion Covered Total %
statement 24 24 100.0
branch 1 2 50.0
condition 1 2 50.0
subroutine 8 8 100.0
pod 2 2 100.0
total 36 38 94.7


line stmt bran cond sub pod time code
1             package WWW::Hetzner::Robot::API::IPs;
2             # ABSTRACT: Hetzner Robot IPs API
3              
4             our $VERSION = '0.100';
5              
6 24     24   159 use Moo;
  24         54  
  24         158  
7 24     24   9543 use Carp qw(croak);
  24         88  
  24         1774  
8 24     24   12514 use WWW::Hetzner::Robot::IP;
  24         93  
  24         982  
9 24     24   202 use namespace::clean;
  24         47  
  24         114  
10              
11              
12             has client => (
13             is => 'ro',
14             required => 1,
15             weak_ref => 1,
16             );
17              
18             sub _wrap {
19 3     3   11 my ($self, $data) = @_;
20 3         79 return WWW::Hetzner::Robot::IP->new(
21             client => $self->client,
22             %$data,
23             );
24             }
25              
26             sub _wrap_list {
27 1     1   5 my ($self, $list) = @_;
28 1         4 return [ map { $self->_wrap($_->{ip}) } @$list ];
  2         2621  
29             }
30              
31             sub list {
32 1     1 1 1521 my ($self) = @_;
33 1         16 my $result = $self->client->get('/ip');
34 1   50     10 return $self->_wrap_list($result // []);
35             }
36              
37              
38             sub get {
39 1     1 1 14743 my ($self, $ip) = @_;
40 1 50       6 croak "IP address required" unless $ip;
41 1         15 my $result = $self->client->get("/ip/$ip");
42 1         6 return $self->_wrap($result->{ip});
43             }
44              
45              
46              
47             1.
48              
49             __END__