Sha256: 44911ae1f6ccf273a1aed13ba01de3e05c7174c6767bb05b66fbbba8be56000d
Contents?: true
Size: 1.4 KB
Versions: 4
Compression:
Stored size: 1.4 KB
Contents
module Appsignal module Utils def self.sanitize(params, only_top_level=false, key_sanitizer=nil) if params.is_a?(Hash) {}.tap do |hsh| params.each do |key, val| hsh[self.sanitize_key(key, key_sanitizer)] = if only_top_level '?' else sanitize(val, only_top_level, key_sanitizer=nil) end end end elsif params.is_a?(Array) if only_top_level sanitize(params[0], only_top_level, key_sanitizer=nil) elsif params.first.is_a?(String) ['?'] else params.map do |item| sanitize(item, only_top_level, key_sanitizer=nil) end end else '?' end end def self.sanitize_key(key, sanitizer) case sanitizer when :mongodb then key.to_s.gsub(/(\..+)/, '.?') else key end end def self.json_generate(body) JSON.generate(jsonify(body)) end def self.jsonify(value) case value when String value.encode( 'utf-8', :invalid => :replace, :undef => :replace ) when Numeric, NilClass, TrueClass, FalseClass value when Hash Hash[value.map { |k, v| [jsonify(k), jsonify(v)] }] when Array value.map { |v| jsonify(v) } else jsonify(value.to_s) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
appsignal-1.0.5 | lib/appsignal/utils.rb |
appsignal-1.1.0.beta.7 | lib/appsignal/utils.rb |
appsignal-1.0.5.beta.4 | lib/appsignal/utils.rb |
appsignal-1.0.5.beta.3 | lib/appsignal/utils.rb |