httplog icon indicating copy to clipboard operation
httplog copied to clipboard

Allow regexp on params filter

Open sobrinho opened this issue 2 years ago • 2 comments

Regexps are more powerful:

HttpLog.configure do |config|
  config.filter_parameters = (
    /date_?of_?birth|dob/
  )
end

module HttpLog
  class << self
    def masked_data(msg)
      case msg
      when Hash
        Hash[msg.map { |key, value| [key, mask?(key) ? PARAM_MASK : masked_data(value)] }]
      when Array
        msg.map { |element| masked_data(element) }
      else
        msg
      end
    end

    # this is slow but not a hotpath, all regexps and strings could be compiled into one regexp.
    def mask?(key)
      config.filter_parameters.any? do |filter_parameter|
        if filter_parameter.is_a?(Regexp)
          key =~ filter_parameter
        else
          key.downcase == filter_parameter
        end
      end
    end
  end
end

sobrinho avatar Jan 31 '23 11:01 sobrinho

Same thing, PRs welcome!

trusche avatar May 11 '23 19:05 trusche

Will do!

sobrinho avatar May 11 '23 19:05 sobrinho