File Coverage

blib/lib/WWW/Hetzner/Robot/Server.pm
Criterion Covered Total %
statement 9 22 40.9
branch 0 2 0.0
condition 0 2 0.0
subroutine 5 8 62.5
pod 6 6 100.0
total 20 40 50.0


line stmt bran cond sub pod time code
1             package WWW::Hetzner::Robot::Server;
2             # ABSTRACT: Hetzner Robot Server entity
3              
4             our $VERSION = '0.100';
5              
6 24     24   159 use Moo;
  24         53  
  24         195  
7 24     24   9497 use namespace::clean;
  24         52  
  24         233  
8              
9             has client => (
10             is => 'ro',
11             required => 1,
12             weak_ref => 1,
13             );
14              
15             has server_number => ( is => 'ro', required => 1 );
16              
17              
18             has server_name => ( is => 'rw' );
19              
20              
21             has server_ip => ( is => 'ro' );
22              
23              
24             has product => ( is => 'ro' );
25              
26              
27             has dc => ( is => 'ro' );
28              
29              
30             has traffic => ( is => 'ro' );
31              
32              
33             has status => ( is => 'ro' );
34              
35              
36             has cancelled => ( is => 'ro' );
37              
38              
39             has paid_until => ( is => 'ro' );
40              
41              
42             # Convenience accessors
43 1     1 1 2593 sub id { shift->server_number }
44              
45              
46 1     1 1 6 sub name { shift->server_name }
47              
48              
49 1     1 1 4 sub ip { shift->server_ip }
50              
51              
52             sub reset {
53 0     0 1   my ($self, $type) = @_;
54 0   0       $type //= 'sw';
55 0           return $self->client->post("/reset/" . $self->server_number, { type => $type });
56             }
57              
58              
59             sub update {
60 0     0 1   my ($self) = @_;
61 0           return $self->client->post("/server/" . $self->server_number, {
62             server_name => $self->server_name,
63             });
64             }
65              
66              
67             sub refresh {
68 0     0 1   my ($self) = @_;
69 0           my $data = $self->client->get("/server/" . $self->server_number);
70 0           my $server = $data->{server};
71 0           for my $key (keys %$server) {
72 0           my $attr = $key;
73 0 0         if ($self->can($attr)) {
74 0           $self->{$attr} = $server->{$key};
75             }
76             }
77 0           return $self;
78             }
79              
80              
81              
82             1.
83              
84             __END__