projects
/
arvados.git
/ commitdiff
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1cabc3d
)
reject API calls with unsupported parameters
author
Tom Clegg <tom@clinicalfuture.com>
Tue, 4 Jun 2013 16:41:14 +0000
(12:41 -0400)
committer
Tom Clegg <tom@clinicalfuture.com>
Tue, 4 Jun 2013 16:41:14 +0000
(12:41 -0400)
sdk/perl/lib/Arvados/ResourceMethod.pm
patch
|
blob
|
history
diff --git
a/sdk/perl/lib/Arvados/ResourceMethod.pm
b/sdk/perl/lib/Arvados/ResourceMethod.pm
index eecc041c65f5fbbf69cb0c8f5eabdc8fe4959b2e..52334d7fe2f8e735d62c0982bb11e58048446169 100644
(file)
--- a/
sdk/perl/lib/Arvados/ResourceMethod.pm
+++ b/
sdk/perl/lib/Arvados/ResourceMethod.pm
@@
-27,7
+27,9
@@
sub execute
my %body_params;
my %given_params = @_;
my %body_params;
my %given_params = @_;
+ my %extra_params = %given_params;
while (my ($param_name, $param) = each %{$method->{'parameters'}}) {
while (my ($param_name, $param) = each %{$method->{'parameters'}}) {
+ delete $extra_params{$param_name};
if ($param->{'required'} && !exists $given_params{$param_name}) {
croak("Required parameter not supplied: $param_name");
}
if ($param->{'required'} && !exists $given_params{$param_name}) {
croak("Required parameter not supplied: $param_name");
}
@@
-74,6
+76,9
@@
sub execute
$body_params{$param_name} = $given_params{$param_name};
}
}
$body_params{$param_name} = $given_params{$param_name};
}
}
+ if (%extra_params) {
+ croak("Unsupported parameter(s) passed to API call /$path: \"" . join('", "', keys %extra_params) . '"');
+ }
my $r = $self->{'resourceAccessor'}->{'api'}->new_request;
$r->set_uri($self->{'resourceAccessor'}->{'api'}->{'discoveryDocument'}->{'baseUrl'} . "/" . $path);
$r->set_method($method->{'httpMethod'});
my $r = $self->{'resourceAccessor'}->{'api'}->new_request;
$r->set_uri($self->{'resourceAccessor'}->{'api'}->{'discoveryDocument'}->{'baseUrl'} . "/" . $path);
$r->set_method($method->{'httpMethod'});
@@
-83,7
+88,7
@@
sub execute
my $data, $headers;
my ($status_number, $status_phrase) = $r->get_status();
if ($status_number != 200) {
my $data, $headers;
my ($status_number, $status_phrase) = $r->get_status();
if ($status_number != 200) {
- croak("API call failed: $status_number $status_phrase\n". $r->get_body());
+ croak("API call
/$path
failed: $status_number $status_phrase\n". $r->get_body());
}
$data = $r->get_body();
$headers = $r->get_headers();
}
$data = $r->get_body();
$headers = $r->get_headers();