class Kangaru::Router

def controller_class

def controller_class
  @controller_class ||= request.controller.constantise(root: namespace)
end

def initialize(namespace: Object)

def initialize(namespace: Object)
  @namespace = namespace
end

def resolve(request)

def resolve(request)
  @request = request
  validate_controller_defined!
  validate_action_defined!
  controller_class.new(request).execute
end

def validate_action_defined!

def validate_action_defined!
  return if controller_class.instance_methods.include?(request.action)
  raise "#{request.action} is not defined by #{request.controller}"
end

def validate_controller_defined!

def validate_controller_defined!
  return if namespace.const_defined?(request.controller)
  raise "#{request.controller} is not defined in #{namespace}"
end