X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/1a03dd7a7d10a4843848ff60957c03110a09df43..b059ddba25e753d9a7a6937ff5f7b119b2bcf464:/sdk/perl/lib/Arvados/ResourceMethod.pm diff --git a/sdk/perl/lib/Arvados/ResourceMethod.pm b/sdk/perl/lib/Arvados/ResourceMethod.pm index fd577752b2..d7e86ffdd8 100644 --- a/sdk/perl/lib/Arvados/ResourceMethod.pm +++ b/sdk/perl/lib/Arvados/ResourceMethod.pm @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + package Arvados::ResourceMethod; use Carp; use Data::Dumper; @@ -28,7 +32,16 @@ sub execute my %body_params; my %given_params = @_; my %extra_params = %given_params; - while (my ($param_name, $param) = each %{$method->{'parameters'}}) { + my %method_params = %{$method->{'parameters'}}; + if ($method->{'request'}->{'properties'}) { + while (my ($prop_name, $prop_value) = + each %{$method->{'request'}->{'properties'}}) { + if (ref($prop_value) eq 'HASH' && $prop_value->{'$ref'}) { + $method_params{$prop_name} = { 'type' => 'object' }; + } + } + } + while (my ($param_name, $param) = each %method_params) { delete $extra_params{$param_name}; if ($param->{'required'} && !exists $given_params{$param_name}) { croak("Required parameter not supplied: $param_name"); @@ -67,6 +80,12 @@ sub execute if (ref $property eq '' || $property eq undef) { $param_value{$property_name} = $property; } + elsif (ref $property eq 'HASH') { + $param_value{$property_name} = {}; + while (my ($k, $v) = each %$property) { + $param_value{$property_name}->{$k} = $v; + } + } } } $body_params{$param_name} = \%param_value;