Class: Raven::Processor::SanitizeData
- Defined in:
- lib/raven/processors/sanitizedata.rb
Constant Summary collapse
- MASK =
'********'
- FIELDS_RE =
/(authorization|password|passwd|secret)/i
- VALUES_RE =
/^\d{16}$/
Instance Method Summary collapse
- #apply(value, key = nil, visited = [], &block) ⇒ Object
- #process(data) ⇒ Object
- #sanitize(key, value) ⇒ Object
Methods inherited from Processor
Constructor Details
This class inherits a constructor from Raven::Processor::Processor
Instance Method Details
#apply(value, key = nil, visited = [], &block) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/raven/processors/sanitizedata.rb', line 11 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 else block.call(key, value) end end |
#process(data) ⇒ Object
42 43 44 45 46 |
# File 'lib/raven/processors/sanitizedata.rb', line 42 def process(data) apply(data) do |key, value| sanitize(key, value) end end |
#sanitize(key, value) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/raven/processors/sanitizedata.rb', line 32 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 |