4062: update python testing to handle the multiple fixture object creation, similar...
[arvados.git] / sdk / perl / lib / Arvados / ResourceProxy.pm
1 package Arvados::ResourceProxy;
2
3 sub new
4 {
5     my $class = shift;
6     my $self = shift;
7     $self->{'resourceAccessor'} = shift;
8     bless ($self, $class);
9     $self;
10 }
11
12 sub save
13 {
14     my $self = shift;
15     $response = $self->{'resourceAccessor'}->{'update'}->execute('uuid' => $self->{'uuid'}, $self->resource_parameter_name() => $self);
16     foreach my $param (keys %$self) {
17         if (exists $response->{$param}) {
18             $self->{$param} = $response->{$param};
19         }
20     }
21     $self;
22 }
23
24 sub update_attributes
25 {
26     my $self = shift;
27     my %updates = @_;
28     $response = $self->{'resourceAccessor'}->{'update'}->execute('uuid' => $self->{'uuid'}, $self->resource_parameter_name() => \%updates);
29     foreach my $param (keys %updates) {
30         if (exists $response->{$param}) {
31             $self->{$param} = $response->{$param};
32         }
33     }
34     $self;
35 }
36
37 sub reload
38 {
39     my $self = shift;
40     $response = $self->{'resourceAccessor'}->{'get'}->execute('uuid' => $self->{'uuid'});
41     foreach my $param (keys %$self) {
42         if (exists $response->{$param}) {
43             $self->{$param} = $response->{$param};
44         }
45     }
46     $self;
47 }
48
49 sub resource_parameter_name
50 {
51     my $self = shift;
52     my $pname = $self->{'resourceAccessor'}->{'resourcesName'};
53     $pname =~ s/s$//;           # XXX not a very good singularize()
54     $pname;
55 }
56
57 1;