Sha256: 10a7353a94b50d3ff4a0f02da8f1f9a26d1b593fd246a8dc35ad6b23573d4f9b

Contents?: true

Size: 1.37 KB

Versions: 27

Compression:

Stored size: 1.37 KB

Contents

module Appsignal
  module Utils
    class ParamsSanitizer
      FILTERED = '[FILTERED]'.freeze

      class << self
        def sanitize(params, options = {})
          sanitize_value(params, options)
        end

        private

        def sanitize_value(value, options = {})
          case value
          when Hash
            sanitize_hash(value, options)
          when Array
            sanitize_array(value, options)
          when TrueClass, FalseClass, NilClass, Fixnum, String, Symbol, Float
            unmodified(value)
          else
            inspected(value)
          end
        end

        def sanitize_hash(source, options)
          filter_keys = options.fetch(:filter_parameters, [])
          {}.tap do |hash|
            source.each_pair do |key, value|
              hash[key] =
                if filter_keys.include?(key.to_s)
                  FILTERED
                else
                  sanitize_value(value, options)
                end
            end
          end
        end

        def sanitize_array(source, options)
          [].tap do |array|
            source.each_with_index do |item, index|
              array[index] = sanitize_value(item, options)
            end
          end
        end

        def unmodified(value)
          value
        end

        def inspected(value)
          "#<#{value.class}>"
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
appsignal-2.0.6 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.0.5 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.0.5.beta.1 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.1.0.alpha.3 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.1.0.alpha.2 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.1.0.alpha.1 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.0.4 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.0.3 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.0.2 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.0.1 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.0.0 lib/appsignal/utils/params_sanitizer.rb
appsignal-2.0.0.beta.1 lib/appsignal/utils/params_sanitizer.rb
appsignal-1.4.0.beta.1 lib/appsignal/utils/params_sanitizer.rb
appsignal-1.3.6 lib/appsignal/utils/params_sanitizer.rb
appsignal-1.3.6.beta.1 lib/appsignal/utils/params_sanitizer.rb
appsignal-1.3.5 lib/appsignal/utils/params_sanitizer.rb
appsignal-1.3.5.beta.1 lib/appsignal/utils/params_sanitizer.rb
appsignal-1.3.4 lib/appsignal/utils/params_sanitizer.rb
appsignal-1.3.3 lib/appsignal/utils/params_sanitizer.rb
appsignal-1.4.0.alpha.2 lib/appsignal/utils/params_sanitizer.rb