File Coverage

blib/lib/DigitalOcean/Image.pm
Criterion Covered Total %
statement 6 26 23.0
branch n/a
condition n/a
subroutine 2 9 22.2
pod 7 7 100.0
total 15 42 35.7


line stmt bran cond sub pod time code
1 1     1   5 use strict;
  1         2  
  1         29  
2             package DigitalOcean::Image;
3 1     1   4 use Mouse;
  1         2  
  1         5  
4              
5             #ABSTRACT: Represents a Region object in the DigitalOcean API
6              
7             has DigitalOcean => (
8             is => 'rw',
9             isa => 'DigitalOcean',
10             );
11              
12              
13             has id => (
14             is => 'ro',
15             isa => 'Num',
16             );
17              
18              
19             has name => (
20             is => 'ro',
21             isa => 'Str',
22             );
23              
24              
25             has type => (
26             is => 'ro',
27             isa => 'Str',
28             );
29              
30              
31             has distribution => (
32             is => 'ro',
33             isa => 'Str',
34             );
35              
36              
37             has slug => (
38             is => 'ro',
39             isa => 'Undef|Str',
40             coerce => 1,
41             );
42              
43              
44             has public => (
45             is => 'ro',
46             isa => 'Bool',
47             );
48              
49              
50             has regions => (
51             is => 'ro',
52             isa => 'ArrayRef[Str]',
53             coerce => 1,
54             );
55              
56              
57             has min_disk_size => (
58             is => 'ro',
59             isa => 'Num',
60             );
61              
62              
63             has created_at => (
64             is => 'ro',
65             isa => 'Str',
66             );
67              
68              
69             has path => (
70             is => 'rw',
71             isa => 'Str',
72             );
73              
74             sub BUILD {
75 0     0 1   my ($self) = @_;
76            
77 0           $self->path('images/' . $self->id . '/');
78             }
79              
80              
81             sub actions {
82 0     0 1   my ($self, $per_page) = @_;
83 0           my $init_arr = [['DigitalOcean', $self]];
84 0           return $self->DigitalOcean->_get_collection($self->path . 'actions', 'DigitalOcean::Action', 'actions', {per_page => $per_page}, $init_arr);
85             }
86              
87              
88             sub update {
89 0     0 1   my $self = shift;
90 0           my (%args) = @_;
91              
92 0           return $self->DigitalOcean->_put_object($self->path, 'DigitalOcean::Image', 'image', \%args);
93             }
94              
95              
96             sub delete {
97 0     0 1   my ($self) = @_;
98 0           return $self->DigitalOcean->_delete(path => $self->path);
99             }
100              
101              
102             sub transfer {
103 0     0 1   my $self = shift;
104 0           my (%args) = @_;
105              
106 0           $args{type} = 'transfer';
107 0           return $self->DigitalOcean->_post_object($self->path . 'actions', 'DigitalOcean::Action', 'action', \%args);
108             }
109              
110              
111             sub convert {
112 0     0 1   my $self = shift;
113 0           my (%args) = @_;
114              
115 0           $args{type} = 'convert';
116 0           return $self->DigitalOcean->_post_object($self->path . 'actions', 'DigitalOcean::Action', 'action', \%args);
117             }
118              
119              
120             sub action {
121 0     0 1   my ($self, $id) = @_;
122              
123 0           return $self->DigitalOcean->_get_object($self->path . "actions/$id", 'DigitalOcean::Action', 'action');
124             }
125              
126              
127             __PACKAGE__->meta->make_immutable();
128              
129             1;
130              
131             __END__