diff options
Diffstat (limited to 'Bugzilla/WebService/Elastic.pm')
-rw-r--r-- | Bugzilla/WebService/Elastic.pm | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/Bugzilla/WebService/Elastic.pm b/Bugzilla/WebService/Elastic.pm new file mode 100644 index 000000000..3a33a1dba --- /dev/null +++ b/Bugzilla/WebService/Elastic.pm @@ -0,0 +1,59 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# Contributor(s): Marc Schumann <wurblzap@gmail.com> +# Max Kanat-Alexander <mkanat@bugzilla.org> +# Mads Bondo Dydensborg <mbd@dbc.dk> +# Noura Elhawary <nelhawar@redhat.com> + +package Bugzilla::WebService::Elastic; + +use 5.10.1; +use strict; +use warnings; +use base qw(Bugzilla::WebService); + +use Bugzilla; +use Bugzilla::Constants; +use Bugzilla::Error; +use Bugzilla::WebService::Util qw(validate); +use Bugzilla::Util qw(trim detaint_natural trick_taint); + +use constant READ_ONLY => qw( suggest_users ); +use constant PUBLIC_METHODS => qw( suggest_users ); + +sub suggest_users { + my ($self, $params) = @_; + + Bugzilla->switch_to_shadow_db(); + + ThrowCodeError('params_required', { function => 'Elastic.suggest_users', params => ['match'] }) + unless defined $params->{match}; + + ThrowUserError('user_access_by_match_denied') + unless Bugzilla->user->id; + + trick_taint($params->{match}); + my $results = Bugzilla->elastic->suggest_users($params->{match} . ""); + my @users = map { + { + real_name => $self->type(string => $_->{real_name}), + name => $self->type(email => $_->{name}), + } + } @$results; + + return { users => \@users }; +} + +1;
\ No newline at end of file |