class QuickNap::Base

Attributes

request[R]
routes[R]

Public Class Methods

new() click to toggle source
# File lib/quicknap.rb, line 5
def initialize
  @routes = {}
  @request = {}
end

Public Instance Methods

call(env) click to toggle source
# File lib/quicknap.rb, line 32
def call(env)
  @request = Rack::Request.new(env)

  http_verb = @request.request_method
  requested_route = @request.path_info

  handler = @routes.fetch(http_verb, {}).fetch(requested_route, nil)

  if handler
    request_result = instance_eval(&handler)
    (request_result.class == String) ? [200, {}, [request_result]] : request_result
  else
    [404, {}, ["'#{http_verb}' to '#{requested_route}' : Undefined route"]]
  end
end
delete(route, &callback) click to toggle source
# File lib/quicknap.rb, line 28
def delete(route, &callback)
  route("DELETE", route, &callback)
end
get(route, &callback) click to toggle source
# File lib/quicknap.rb, line 12
def get(route, &callback)
  route("GET", route, &callback)
end
listen_at(port_number) click to toggle source
# File lib/quicknap.rb, line 48
def listen_at(port_number)
  Rack::Handler::WEBrick.run QuickNap::QuickNapApp, Port: port_number
end
patch(route, &callback) click to toggle source
# File lib/quicknap.rb, line 20
def patch(route, &callback)
  route("PATCH", route, &callback)
end
post(route, &callback) click to toggle source
# File lib/quicknap.rb, line 16
def post(route, &callback)
  route("POST", route, &callback)
end
put(route, &callback) click to toggle source
# File lib/quicknap.rb, line 24
def put(route, &callback)
  route("PUT", route, &callback)
end

Private Instance Methods

params() click to toggle source
# File lib/quicknap.rb, line 59
def params
  @request.params
end
post_body() click to toggle source
# File lib/quicknap.rb, line 63
def post_body
  @request.body.read
end
route(http_verb, route, &callback) click to toggle source
# File lib/quicknap.rb, line 54
def route(http_verb, route, &callback)
  @routes[http_verb] ||= {}
  @routes[http_verb][route] = callback
end