class Silicon::ChainFactory

Public Class Methods

new(container, silicon_config) click to toggle source
# File lib/silicon/chain_factory.rb, line 5
def initialize(container, silicon_config)
  @container = container
  @silicon_config = silicon_config
end

Public Instance Methods

create(match) click to toggle source
# File lib/silicon/chain_factory.rb, line 10
def create(match)
  status = match.route.http_status || default_http_status(match.route.http_verb)
  register_params(match.params)
  register_status(status)
  Chain.new(@container, @silicon_config, match.route.commands, match.route.catch)
end

Private Instance Methods

default_http_status(http_verb) click to toggle source
# File lib/silicon/chain_factory.rb, line 35
def default_http_status(http_verb)
  http_verb == 'POST' ? 201 : 200
end
register_params(params) click to toggle source
# File lib/silicon/chain_factory.rb, line 19
def register_params(params)
  params.keys.each do |key|
    @container
      .register_instance(params[key], key.to_sym)
      .using_lifetime(:scope)
      .bound_to(:silicon_request)
  end
end
register_status(status) click to toggle source
# File lib/silicon/chain_factory.rb, line 28
def register_status(status)
  @container
    .register_instance(status, :silicon_status)
    .using_lifetime(:scope)
    .bound_to(:silicon_request)
end