module Newark::App

Constants

FOUR_O_FOUR
HTTP_VERBS

Attributes

request[R]
response[R]

Public Class Methods

included(klass) click to toggle source
# File lib/newark/app.rb, line 10
def self.included(klass)
  klass.instance_variable_set :@routes, {}
  klass.extend ClassMethods
end
new(*) click to toggle source
Calls superclass method
# File lib/newark/app.rb, line 49
def initialize(*)
  super
  @before_hooks = self.class.instance_variable_get(:@before_hooks)
  @after_hooks  = self.class.instance_variable_get(:@after_hooks)
  @routes       = self.class.instance_variable_get(:@routes)
end

Public Instance Methods

_call(env) click to toggle source
# File lib/newark/app.rb, line 60
def _call(env)
  @env      = env
  @request  = Request.new(@env)
  @response = Response.new
  route
end
call(env) click to toggle source
# File lib/newark/app.rb, line 56
def call(env)
  dup._call(env)
end
headers() click to toggle source
# File lib/newark/app.rb, line 67
def headers
  response.headers
end
params() click to toggle source
# File lib/newark/app.rb, line 71
def params
  request.params
end
route() click to toggle source
# File lib/newark/app.rb, line 75
def route
  route = match_route
  if route
    if exec_before_hooks
      response.body = exec(route.handler)
      exec_after_hooks
    end
    status, headers, body = response.finish
    [status, headers, body.respond_to?(:body) ? body.body : body]
  else
    FOUR_O_FOUR
  end
end

Private Instance Methods

exec(action) click to toggle source
# File lib/newark/app.rb, line 99
def exec(action)
  if action.respond_to? :to_sym
    send(action)
  else
    instance_exec(&action)
  end
end
exec_after_hooks() click to toggle source
# File lib/newark/app.rb, line 115
def exec_after_hooks
  exec_hooks @after_hooks
end
exec_before_hooks() click to toggle source
# File lib/newark/app.rb, line 111
def exec_before_hooks
  exec_hooks @before_hooks
end
exec_handler(handler) click to toggle source
# File lib/newark/app.rb, line 107
def exec_handler(handler)
  exec(handler)
end
exec_hooks(hooks) click to toggle source
# File lib/newark/app.rb, line 119
def exec_hooks(hooks)
  return true if hooks.nil?
  hooks.each do |hook|
    return false if exec(hook) == false
  end
end
match_route() click to toggle source
# File lib/newark/app.rb, line 91
def match_route
  Router.new(routes, request).route
end
routes() click to toggle source
# File lib/newark/app.rb, line 95
def routes
  @routes[@request.request_method]
end