Sha256: d55806ce3202538000853892b8f1eff01e07cc19154bce9df22926f80de9e9f1
Contents?: true
Size: 1.39 KB
Versions: 27
Compression:
Stored size: 1.39 KB
Contents
module Appsignal module Utils class QueryParamsSanitizer REPLACEMENT_KEY = '?'.freeze module ClassMethods def sanitize(params, only_top_level = false, key_sanitizer = nil) case params when Hash sanitize_hash params, only_top_level, key_sanitizer when Array sanitize_array params, only_top_level, key_sanitizer else REPLACEMENT_KEY end end private def sanitize_hash(hash, only_top_level, key_sanitizer) {}.tap do |h| hash.each do |key, value| h[sanitize_key(key, key_sanitizer)] = if only_top_level REPLACEMENT_KEY else sanitize(value, only_top_level, key_sanitizer) end end end end def sanitize_array(array, only_top_level, key_sanitizer) if only_top_level sanitize(array[0], only_top_level, key_sanitizer) else array.map do |value| sanitize(value, only_top_level, key_sanitizer) end.uniq end end def sanitize_key(key, sanitizer) case sanitizer when :mongodb then key.to_s.gsub(/(\..+)/, ".#{REPLACEMENT_KEY}") else key end end end extend ClassMethods end end end
Version data entries
27 entries across 27 versions & 1 rubygems