From 120fd9858589152d99050bdaba622d0bac60e84c Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Fri, 20 Jun 2008 08:46:49 +0000 Subject: Bug 432914: include_fields and exclude_fields arguments for WebService User.get() Patch By Max Kanat-Alexander r=ghendricks, a=mkanat --- Bugzilla/WebService/Util.pm | 74 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Bugzilla/WebService/Util.pm (limited to 'Bugzilla/WebService/Util.pm') diff --git a/Bugzilla/WebService/Util.pm b/Bugzilla/WebService/Util.pm new file mode 100644 index 000000000..16fea8c15 --- /dev/null +++ b/Bugzilla/WebService/Util.pm @@ -0,0 +1,74 @@ +# -*- 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. +# +# The Initial Developer of the Original Code is Everything Solved. +# Portions created by Everything Solved are Copyright (C) 2008 +# Everything Solved. All Rights Reserved. +# +# Contributor(s): Max Kanat-Alexander + +package Bugzilla::WebService::Util; +use strict; + +use base qw(Exporter); + +our @EXPORT_OK = qw(filter); + +sub filter ($$) { + my ($params, $hash) = @_; + my %newhash = %$hash; + my %include = map { $_ => 1 } @{ $params->{'include_fields'} || [] }; + my %exclude = map { $_ => 1 } @{ $params->{'exclude_fields'} || [] }; + + foreach my $key (keys %$hash) { + if (defined $params->{include_fields}) { + delete $newhash{$key} if !$include{$key}; + } + if (defined $params->{exclude_fields}) { + delete $newhash{$key} if $exclude{$key}; + } + } + + return \%newhash; +} + +__END__ + +=head1 NAME + +Bugzilla::WebService::Util - Utility functions used inside of the WebService +code. + +=head1 DESCRIPTION + +This is somewhat like L, but these functions are only used +internally in the WebService code. + +=head1 SYNOPSIS + + filter({ include_fields => ['id', 'name'], + exclude_fields => ['name'] }, $hash); + +=head1 METHODS + +=over + +=item C + +This helps implement the C and C arguments +of WebService methods. Given a hash (the second argument to this subroutine), +this will remove any keys that are I in C and then remove +any keys that I in C. + +=back -- cgit v1.2.3-24-g4f1b