Sha256: 3393f5696d383968957e8ed89690621327d7a4cc8cfaf77f37bf4a1a869c3f43

Contents?: true

Size: 941 Bytes

Versions: 12

Compression:

Stored size: 941 Bytes

Contents

require 'opbeat/processor'

module Opbeat
  module Processor
    class SanitizeData < Processor

      MASK = '********'
      FIELDS_RE = /(authorization|password|passwd|secret)/i
      VALUES_RE = /^\d{16}$/

      def apply(value, key=nil, &block)
        if value.is_a?(Hash)
          value.each.inject({}) do |memo, (k, v)|
            memo[k] = apply(v, k, &block)
            memo
          end
        elsif value.is_a?(Array)
          value.map do |value|
            apply(value, key, &block)
          end
        else
          block.call(key, value)
        end
      end

      def sanitize(key, value)
        if !value.is_a?(String) || value.empty?
          value
        elsif VALUES_RE.match(value) or FIELDS_RE.match(key)
          MASK
        else
          value
        end
      end

      def process(data)
        apply(data) do |key, value|
          sanitize(key, value)
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
opbeat-1.1.1 lib/opbeat/processors/sanitizedata.rb
opbeat-1.1.0 lib/opbeat/processors/sanitizedata.rb
opbeat-1.0.0 lib/opbeat/processors/sanitizedata.rb
opbeat-0.9.2 lib/opbeat/processors/sanitizedata.rb
opbeat-0.9.1 lib/opbeat/processors/sanitizedata.rb
opbeat-0.9.0 lib/opbeat/processors/sanitizedata.rb
opbeat-0.8.0 lib/opbeat/processors/sanitizedata.rb
opbeat-0.7.1 lib/opbeat/processors/sanitizedata.rb
opbeat-0.7.0 lib/opbeat/processors/sanitizedata.rb
opbeat-0.6.1 lib/opbeat/processors/sanitizedata.rb
opbeat-0.6.0 lib/opbeat/processors/sanitizedata.rb
opbeat-0.5.2 lib/opbeat/processors/sanitizedata.rb