number_too_large => 54,
number_too_small => 55,
illegal_date => 56,
+ param_integer_required => 57,
+ param_integer_array_required => 58,
# Bug errors usually occupy the 100-200 range.
improper_bug_id_field_value => 100,
bug_id_does_not_exist => 101,
use Storable qw(dclone);
use Test::Taint ();
use URI::Escape qw(uri_unescape);
+use Bugzilla::WebService::Util qw(validate);
use parent qw(Exporter);
return $params;
}
-sub validate {
- my ($self, $params, @keys) = @_;
-
- # If $params is defined but not a reference, then we weren't
- # sent any parameters at all, and we're getting @keys where
- # $params should be.
- return ($self, undef) if (defined $params and !ref $params);
-
- # If @keys is not empty then we convert any named
- # parameters that have scalar values to arrayrefs
- # that match.
- foreach my $key (@keys) {
- if (exists $params->{$key}) {
- $params->{$key} = ref $params->{$key}
- ? $params->{$key}
- : [ $params->{$key} ];
- }
- }
-
- return ($self, $params);
-}
-
sub translate {
my ($params, $mapped) = @_;
my %changes;
{ function => 'Bug.update_comment_tags',
param => 'comment_id' });
+ ThrowCodeError("param_integer_required", { function => 'Bug.update_comment_tags',
+ param => 'comment_id' })
+ unless $comment_id =~ /^[0-9]+$/;
+
my $comment = Bugzilla::Comment->new($comment_id)
|| return [];
$comment->bug->check_is_visible();
number_too_large => 54,
number_too_small => 55,
illegal_date => 56,
+ param_integer_required => 57,
+ param_integer_array_required => 58,
# Bug errors usually occupy the 100-200 range.
improper_bug_id_field_value => 100,
bug_id_does_not_exist => 101,
use Storable qw(dclone);
use URI::Escape qw(uri_unescape);
+use List::MoreUtils qw(all any);
use parent qw(Exporter);
# sent any parameters at all, and we're getting @keys where
# $params should be.
return ($self, undef) if (defined $params and !ref $params);
-
+
+ my @id_params = qw( ids comment_ids );
# If @keys is not empty then we convert any named
# parameters that have scalar values to arrayrefs
# that match.
$params->{$key} = ref $params->{$key}
? $params->{$key}
: [ $params->{$key} ];
+
+ if (any { $key eq $_ } @id_params) {
+ my $ids = $params->{$key};
+ ThrowCodeError('param_integer_array_required', { param => $key })
+ unless ref($ids) eq 'ARRAY' && all { /^[0-9]+$/ } @$ids;
+ }
}
}
a <code>[% param FILTER html %]</code> argument, and that
argument was not set.
+ [% ELSIF error == "param_integer_required" %]
+ The function <code>[% function FILTER html %]</code> requires
+ that <code>[% param FILTER html %]</code> be an integer.
+
+ [% ELSIF error == "param_integer_array_required" %]
+ The <code>[% param FILTER html %]</code> parameter must be an array of integers.
+
[% ELSIF error == "params_required" %]
[% title = "Missing Parameter" %]
The function <code>[% function FILTER html %]</code> requires