class Cased::Sensitive::Handler

Attributes

handlers[W]
label[R]

Public Class Methods

handlers() click to toggle source
# File lib/cased/sensitive/handler.rb, line 6
def self.handlers
  @handlers ||= []
end
new(label, handler) click to toggle source
# File lib/cased/sensitive/handler.rb, line 20
def initialize(label, handler)
  @label = label.to_sym
  @handler = prepare_handler(handler)
end
register(label, handler) click to toggle source
# File lib/cased/sensitive/handler.rb, line 14
def self.register(label, handler)
  handlers << Handler.new(label, handler)
end

Public Instance Methods

call(audit_event, key, value) click to toggle source
# File lib/cased/sensitive/handler.rb, line 25
def call(audit_event, key, value)
  @handler.call(audit_event, key.to_sym, value)
end

Private Instance Methods

prepare_handler(handler) click to toggle source
# File lib/cased/sensitive/handler.rb, line 31
def prepare_handler(handler)
  case handler
  when Regexp
    proc do |_audit_event, key, value|
      string = Cased::Sensitive::String.new(value)
      string.matches(handler).collect do |match|
        begin_offset = match.begin(0)
        end_offset = match.end(0)

        Cased::Sensitive::Range.new(
          label: label,
          key: key,
          begin_offset: begin_offset,
          end_offset: end_offset,
        )
      end
    end
  else
    raise ArgumentError, "expected #{handler} to be a Regexp or Proc"
  end
end