class Raven::Processor::SanitizeSSN
Constants
- FIELDS_RE
- MASK
- VALUES_RE
Public Instance Methods
apply(value, key = nil, visited = [], &block)
click to toggle source
# File lib/raven/processors/sanitizessn.rb, line 19 def apply(value, key = nil, visited = [], &block) if value.is_a?(Hash) return "{...}" if visited.include?(value.__id__) visited += [value.__id__] value.each.reduce({}) do |memo, (k, v)| memo[k] = apply(v, k, visited, &block) memo end elsif value.is_a?(Array) return "[...]" if visited.include?(value.__id__) visited += [value.__id__] value.map do |value_| apply(value_, key, visited, &block) end elsif value.is_a?(String) && json_hash = JSON.parse(value) rescue nil return "[...]" if visited.include?(value.__id__) visited += [value.__id__] json_hash = json_hash.each.reduce({}) do |memo, (k, v)| memo[k] = apply(v, k, visited, &block) memo end json_hash.to_json else block.call(key, value) end end
process(data)
click to toggle source
# File lib/raven/processors/sanitizessn.rb, line 61 def process(data) apply(data) do |key, value| sanitize(key, value) end end
sanitize(key, value)
click to toggle source
# File lib/raven/processors/sanitizessn.rb, line 51 def sanitize(key, value) if !value.is_a?(String) || value.empty? value elsif VALUES_RE.match(clean_invalid_utf8_bytes(value)) || FIELDS_RE.match(key) MASK else clean_invalid_utf8_bytes(value) end end
Private Instance Methods
clean_invalid_utf8_bytes(text)
click to toggle source
# File lib/raven/processors/sanitizessn.rb, line 69 def clean_invalid_utf8_bytes(text) if RUBY_VERSION <= '1.8.7' text else text.encode( 'UTF-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '' ) end end