Merge branch '11807-yaml-to-json'
[arvados.git] / sdk / perl / lib / Arvados / ResourceProxy.pm
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 package Arvados::ResourceProxy;
6
7 sub new
8 {
9     my $class = shift;
10     my $self = shift;
11     $self->{'resourceAccessor'} = shift;
12     bless ($self, $class);
13     $self;
14 }
15
16 sub save
17 {
18     my $self = shift;
19     $response = $self->{'resourceAccessor'}->{'update'}->execute('uuid' => $self->{'uuid'}, $self->resource_parameter_name() => $self);
20     foreach my $param (keys %$self) {
21         if (exists $response->{$param}) {
22             $self->{$param} = $response->{$param};
23         }
24     }
25     $self;
26 }
27
28 sub update_attributes
29 {
30     my $self = shift;
31     my %updates = @_;
32     $response = $self->{'resourceAccessor'}->{'update'}->execute('uuid' => $self->{'uuid'}, $self->resource_parameter_name() => \%updates);
33     foreach my $param (keys %updates) {
34         if (exists $response->{$param}) {
35             $self->{$param} = $response->{$param};
36         }
37     }
38     $self;
39 }
40
41 sub reload
42 {
43     my $self = shift;
44     $response = $self->{'resourceAccessor'}->{'get'}->execute('uuid' => $self->{'uuid'});
45     foreach my $param (keys %$self) {
46         if (exists $response->{$param}) {
47             $self->{$param} = $response->{$param};
48         }
49     }
50     $self;
51 }
52
53 sub resource_parameter_name
54 {
55     my $self = shift;
56     my $pname = $self->{'resourceAccessor'}->{'resourcesName'};
57     $pname =~ s/s$//;           # XXX not a very good singularize()
58     $pname;
59 }
60
61 1;