This helps implement the include_fields and exclude_fields arguments of WebService methods. Given a hash (the second argument to this subroutine), this will remove any keys that are not in include_fields and then remove any keys that are in exclude_fields.

An optional third option can be passed that prefixes the field name to allow filtering of data two or more levels deep.

For example, if you want to filter out the id key/value in components returned by Product.get, you would use the value component.id in your exclude_fields list.

This helps in the validation of parameters passed into the WebService methods. Currently it converts listed parameters into an array reference if the client only passed a single scalar value. It modifies the parameters hash in place so other parameters should be unaltered.

WebService methods frequently take parameters with different names than the ones that we use internally in Bugzilla. This function takes a hashref that has field names for keys and returns a hashref with those keys renamed according to the mapping passed in with the second parameter (which is also a hashref).

Creates objects of the type passed in as the second parameter, using the parameters passed to a WebService method (the first parameter to this function). Helps make life simpler for WebService methods that internally create objects via both "ids" and "names" fields. Also de-duplicates objects that were loaded by both "ids" and "names". Returns an arrayref of objects.

Allows for certain parameters related to authentication such as Bugzilla_login, Bugzilla_password, and Bugzilla_token to have shorter named equivalents passed in. This function converts the shorter versions to their respective internal names.