File Coverage

blib/lib/WWW/VastAI/API/Templates.pm
Criterion Covered Total %
statement 35 35 100.0
branch 7 14 50.0
condition 2 10 20.0
subroutine 9 9 100.0
pod 4 4 100.0
total 57 72 79.1


line stmt bran cond sub pod time code
1             package WWW::VastAI::API::Templates;
2             our $VERSION = '0.001';
3             # ABSTRACT: Template listing and management for Vast.ai
4              
5 10     10   83 use Moo;
  10         37  
  10         65  
6 10     10   4329 use Carp qw(croak);
  10         71  
  10         747  
7 10     10   5011 use WWW::VastAI::Template;
  10         36  
  10         379  
8 10     10   65 use namespace::clean;
  10         20  
  10         72  
9              
10             has client => (
11             is => 'ro',
12             required => 1,
13             weak_ref => 1,
14             );
15              
16             sub _wrap {
17 3     3   8 my ($self, $data) = @_;
18 3         79 return WWW::VastAI::Template->new(
19             client => $self->client,
20             data => $data,
21             );
22             }
23              
24             sub list {
25 1     1 1 1495 my ($self, %query) = @_;
26 1         11 my $result = $self->client->request_op('searchTemplates', query => \%query);
27 1 50 0     12 my $templates = ref $result eq 'HASH' ? ($result->{templates} || $result->{results} || []) : ($result || []);
      0        
28 1         3 return [ map { $self->_wrap($_) } @{$templates} ];
  1         7  
  1         4  
29             }
30              
31             sub create {
32 1     1 1 7992 my ($self, %params) = @_;
33 1 50       6 croak "name required" unless $params{name};
34 1 50       6 croak "image required" unless $params{image};
35              
36 1         50 my $result = $self->client->request_op('createTemplate', body => \%params);
37 1 50 33     7 my $template = ref $result eq 'HASH' ? ($result->{template} || $result) : $result;
38 1         5 return $self->_wrap($template);
39             }
40              
41             sub update {
42 1     1 1 4 my ($self, $hash_id, %params) = @_;
43 1 50       5 croak "hash_id required" unless $hash_id;
44 1         2 $params{hash_id} = $hash_id;
45              
46 1         7 my $result = $self->client->request_op('updateTemplate', body => \%params);
47 1 50 33     9 my $template = ref $result eq 'HASH' ? ($result->{template} || $result) : $result;
48 1         5 return $self->_wrap($template);
49             }
50              
51             sub delete {
52 1     1 1 3 my ($self, $id) = @_;
53 1 50       5 croak "template id required" unless defined $id;
54 1         8 return $self->client->request_op('deleteTemplate', body => { id => $id });
55             }
56              
57             1;
58              
59             __END__