Class: Raven::Processor::SanitizeSSN
- Inherits:
-
Raven::Processor
- Object
- Raven::Processor
- Raven::Processor::SanitizeSSN
- Defined in:
- lib/raven/processors/sanitizessn.rb
Constant Summary collapse
- MASK =
'********'- FIELDS_RE =
/(ssn|social(.*)?sec)/i- VALUES_RE =
/^\d{16}$/
Instance Method Summary collapse
- #apply(value, key = nil, visited = [], &block) ⇒ Object
- #process(data) ⇒ Object
- #sanitize(key, value) ⇒ Object
Instance Method Details
#apply(value, key = nil, visited = [], &block) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# 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 json_data = parse_as_json(value) && json_data.is_a?(Hash) apply(json_data, key, visited, &block) else block.call(key, value) end end |
#process(data) ⇒ Object
53 54 55 56 57 |
# File 'lib/raven/processors/sanitizessn.rb', line 53 def process(data) apply(data) do |key, value| sanitize(key, value) end end |
#sanitize(key, value) ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'lib/raven/processors/sanitizessn.rb', line 43 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 |