8104: OPENSOCKETFUNCTION accepts calls from pycurl 7.21.
[arvados.git] / sdk / perl / lib / Arvados / ResourceMethod.pm
index cfcc34a4882cc530dff8f9dd3f2959918f6482c3..649d779c6755256ed4624315ab7e61897fd92b1b 100644 (file)
@@ -28,16 +28,16 @@ sub execute
     my %body_params;
     my %given_params = @_;
     my %extra_params = %given_params;
+    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'}) {
-               $body_params{$prop_name} = $given_params{$prop_name};
-               delete $extra_params{$prop_name};
-           }
-       }
+        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->{'parameters'}}) {
+    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");
@@ -76,6 +76,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;