class ApiHammer::Filtration::FormEncoded
Public Class Methods
new(string, options = {})
click to toggle source
# File lib/api_hammer/filtration/form_encoded.rb, line 6 def initialize(string, options = {}) @string = string @options = options end
Public Instance Methods
filter()
click to toggle source
# File lib/api_hammer/filtration/form_encoded.rb, line 11 def filter ss = StringScanner.new(@string) filtered = '' while !ss.eos? if ss.scan(/[&;]/) filtered << ss[0] end if ss.scan(/[^&;]+/) kv = ss[0] key, _ = kv.split('=', 2) parsed_key = CGI::unescape(key) if [*@options[:filter_keys]].any? { |fk| parsed_key =~ /(\A|[\[\]])#{Regexp.escape(fk)}(\z|[\[\]])/ } filtered << [key, '[FILTERED]'].join('=') else filtered << ss[0] end end end filtered end