Class: Textus::Dispatch::Middleware::Binder

Inherits:
Base
  • Object
show all
Defined in:
lib/textus/dispatch/middleware/binder.rb

Instance Method Summary collapse

Methods inherited from Base

inherited, middleware_name

Instance Method Details

#call(container:, command:, call:, next_handler:) ⇒ Object

rubocop:disable Lint/UnusedMethodArgument



7
8
9
10
11
12
13
14
15
16
# File 'lib/textus/dispatch/middleware/binder.rb', line 7

def call(container:, command:, call:, next_handler:) # rubocop:disable Lint/UnusedMethodArgument
  return next_handler.call(command, call) unless command.is_a?(Dispatch::Binder::Pending)

  spec = command.spec
  contract_class = VerbRegistry.contract_class_for(spec.verb) or
    raise Textus::UsageError.new("unknown command verb: #{spec.verb}")
  resolved = Dispatch::Binder.bind(spec, command.inputs)
  built = Dispatch::Pipeline.build_command(contract_class, resolved)
  next_handler.call(built, call)
end