class Substation::Response

Base class for action responses

The following code illustrates context and serves as setup for all instance method doc examples

module App
  class Environment
    def initialize(storage, logger)
      @storage, @logger = storage, logger
    end
  end

  class SuccessfulAction
    def self.call(request)
      data = perform_work
      request.success(data)
    end
  end

  class FailingAction
    def self.call(request)
      error = perform_work
      request.error(error)
    end
  end
end

storage    = SomeStorageAbstraction.new
env        = App::Environment.new(storage, Logger.new($stdout))
dispatcher = Substation::Dispatcher.coerce({
  :successful_action => { :action => App::SuccessfulAction },
  :failing_action    => { :action => App::FailingAction }
}, env)

@abstract

Attributes

env[R]

The application environment used within an action

@example

response = dispatcher.call(:successful_action, :some_input)
response.env # => env passed to Substation::Dispatcher.coerce(config, env)

@return [Object]

@api public

input[R]

The request model instance passed into an action

@example

response = dispatcher.call(:successful_action, :some_input)
response.input # => :some_input

@see Request#input

@return [Object]

@api public

Public Class Methods

new(_request, _output) click to toggle source

Initialize a new instance

@param [Request] request

the request passed to the action that returned this response

@param [Object] output

the data returned from the action that returned this response

@return [undefined]

@api private

Calls superclass method
# File lib/substation/response.rb, line 85
def initialize(_request, _output)
  super
  @env   = request.env
  @input = request.input
end

Public Instance Methods

exception?() click to toggle source

Test wether processing raised an exception

@return [true]

@api private

# File lib/substation/response.rb, line 114
def exception?
  false
end
to_request(new_input = output) click to toggle source

Return a {Request} instance built upon this response

@return [Request]

@api private

# File lib/substation/response.rb, line 123
def to_request(new_input = output)
  Request.new(request.name, env, new_input)
end