Files
old-pruning-excersise/lib/http/query.rb

21 lines
672 B
Ruby
Raw Normal View History

2018-08-13 11:25:01 +02:00
module Pruning
module HTTP
2018-08-13 18:54:12 +02:00
# Whitelists the URL query parameters
2018-08-13 11:25:01 +02:00
class Query < Struct.new(:name, :indicator_ids)
def initialize(params = {})
2018-08-13 12:48:47 +02:00
symbolised = params.map { |k, v| { k.to_sym => v } }.reduce({}, :merge)
2018-08-13 11:25:01 +02:00
values = members.map do |member|
2018-08-13 12:48:47 +02:00
value = symbolised.fetch(member, nil)
2018-08-13 11:25:01 +02:00
next if value.nil?
case member
2018-08-13 18:54:12 +02:00
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
2018-08-13 11:25:01 +02:00
end
end
super(*values)
end
end
end
end