class Substation::Processor::Evaluator

Abstract processor to evaluate a request coming into a chain

Public Instance Methods

call(request) click to toggle source

Evaluate a chain's request input data

@param [Request] request

the request to process

@return [Response]

@api private

# File lib/substation/processor/evaluator.rb, line 46
def call(request)
  result = invoke(decompose(request))
  if result.success?
    on_success(request, result)
  else
    on_failure(request, result)
  end
end

Private Instance Methods

on_failure(request, result) click to toggle source

Return a failure response by invoking a failure chain

@param [Request] request

the evaluated request

@param [#output] result

the evaluation result

@return [Response::Failure]

@api private

# File lib/substation/processor/evaluator.rb, line 83
def on_failure(request, result)
  failure_chain.call(request.error(output(request, result)))
end
on_success(request, result) click to toggle source

Return a successful response

@param [Request] request

the evaluated request

@param [#output] result

the evaluation result

@return [Response::Success]

@api private

# File lib/substation/processor/evaluator.rb, line 68
def on_success(request, result)
  request.success(output(request, result))
end
output(request, result) click to toggle source

Return a new composed output

@param [Request] request

the evaluated request

@param [Response] response

the evaluation result

@return [Object]

@api private

# File lib/substation/processor/evaluator.rb, line 98
def output(request, result)
  compose(request, result.output)
end