module Pruning module HTTP # Whitelists the URL query parameters class Query < Struct.new(:name, :indicator_ids) def initialize(params = {}) symbolised = params.map { |k, v| { k.to_sym => v } }.reduce({}, :merge) values = members.map do |member| value = symbolised.fetch(member, nil) next if value.nil? case member when :indicator_ids then value.map(&->(indicator_id) { indicator_id.to_i }) # break on purpose if indicator_ids is not an array when :name then value.to_s.gsub(/[^A-Za-z]/, '') else value end end super(*values) end end end end