class GrapeLogging::Loggers::FilterParameters
Constants
- AD_PARAMS
Public Class Methods
Source
# File lib/grape_logging/loggers/filter_parameters.rb, line 6 def initialize(filter_parameters = nil, replacement = nil, exceptions = %w(controller action format)) @filter_parameters = filter_parameters || (defined?(::Rails.application) ? ::Rails.application.config.filter_parameters : []) @replacement = replacement || '[FILTERED]' @exceptions = exceptions end
Public Instance Methods
Source
# File lib/grape_logging/loggers/filter_parameters.rb, line 12 def parameters(request, _) { params: safe_parameters(request) } end
Private Instance Methods
Source
# File lib/grape_logging/loggers/filter_parameters.rb, line 38 def build_encoding_map(parameters) parameters.each_with_object({}) do |(k, v), h| key_str = k.to_s h[key_str.dup.force_encoding(Encoding::ASCII_8BIT)] = [key_str.encoding, v.is_a?(Hash) ? build_encoding_map(v) : nil] end end
Source
# File lib/grape_logging/loggers/filter_parameters.rb, line 31 def clean_parameters(parameters) original_encoding_map = build_encoding_map(parameters) params = transform_key_encoding(parameters, Hash.new{ |h, _| [Encoding::ASCII_8BIT, h] }) cleaned_params = parameter_filter.filter(params).reject{ |key, _value| @exceptions.include?(key) } transform_key_encoding(cleaned_params, original_encoding_map) end
Source
# File lib/grape_logging/loggers/filter_parameters.rb, line 18 def parameter_filter @parameter_filter ||= ParameterFilter.new(@replacement, @filter_parameters) end
Source
# File lib/grape_logging/loggers/filter_parameters.rb, line 22 def safe_parameters(request) # Now this logger can work also over Rails requests if request.params.empty? clean_parameters(request.env[AD_PARAMS] || {}) else clean_parameters(request.params) end end
Source
# File lib/grape_logging/loggers/filter_parameters.rb, line 45 def transform_key_encoding(parameters, encoding_map) parameters.each_with_object({}) do |(k, v), h| key_str = k.to_s encoding, children_encoding_map = encoding_map[key_str] h[key_str.dup.force_encoding(encoding)] = v.is_a?(Hash) ? transform_key_encoding(v, children_encoding_map) : v end end