Sha256: 98cb87f1f86f12caa67b5e51d7b15e6c8d833b1d2473ebb21e6a136cbd9eb081
Contents?: true
Size: 1.44 KB
Versions: 80
Compression:
Stored size: 1.44 KB
Contents
# frozen_string_literal: true module Appsignal module Utils # @api private class QueryParamsSanitizer REPLACEMENT_KEY = "?" 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
80 entries across 80 versions & 1 rubygems