Class: CommandProcessor::Processor

Inherits:
Object
  • Object
show all
Defined in:
lib/command_processor/processor.rb

Instance Method Summary collapse

Constructor Details

#initialize(logger: Logger.new(STDOUT), blacklisted_parameters: ["password"]) ⇒ Processor

Returns a new instance of Processor.



7
8
9
10
11
# File 'lib/command_processor/processor.rb', line 7

def initialize(logger: Logger.new(STDOUT), blacklisted_parameters: ["password"])
  @container = Container.new
  @logger = logger
  @blacklisted_parameters = blacklisted_parameters
end

Instance Method Details

#execute(command) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/command_processor/processor.rb', line 17

def execute(command)
  handler_class = Object.const_get("#{command.class.name}Handler")
  handler = @container.resolve_by_type(handler_class)
  
  #log
  parameters = command.to_h
  filtered_parameters = parameters.inject({}) do |memo, (key, value)|
    if @blacklisted_parameters.include?(key.to_s)
      memo.merge(key => "[FILTERED]")
    else
      memo.merge(key => value)
    end
  end
  @logger.info("Processed by #{handler.class.name}\n  Parameters: #{filtered_parameters}")

  handler.execute(command)
end

#register(*args, &block) ⇒ Object



13
14
15
# File 'lib/command_processor/processor.rb', line 13

def register(*args, &block)
  @container.register(*args, &block)
end