lib/restfulness/dispatchers/rack.rb in restfulness-0.2.0 vs lib/restfulness/dispatchers/rack.rb in restfulness-0.2.1

- old
+ new

@@ -3,73 +3,55 @@ module Dispatchers class Rack < Dispatcher def call(env) - rack_req = ::Rack::Request.new(env) - # Make sure we understand the request - request = Request.new(app) - prepare_request(env, rack_req, request) + request = prepare_request(env) # Prepare a suitable response response = Response.new(request) response.run - log_response(response.status) [response.status, response.headers, [response.payload || ""]] end protected - def prepare_request(env, rack_req, request) - request.uri = rack_req.url - request.action = parse_action(rack_req.request_method) - request.query = rack_req.GET - request.body = rack_req.body - request.remote_ip = rack_req.ip - request.headers = prepare_headers(env) + def prepare_request(env) + rack_req = ::Rack::Request.new(env) + request = Request.new(app) + request.uri = rack_req.url + request.action = parse_action(rack_req.request_method) + request.query = rack_req.GET + request.body = rack_req.body + request.headers = prepare_headers(env) + request.remote_ip = rack_req.ip + request.user_agent = rack_req.user_agent + # Sometimes rack removes content type from headers request.headers[:content_type] ||= rack_req.content_type + + request end def parse_action(action) case action - when 'DELETE' - :delete - when 'GET' - :get - when 'HEAD' - :head - when 'POST' - :post - when 'PUT' - :put - when 'PATCH' - :patch - when 'OPTIONS' - :options + when 'DELETE', 'GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'OPTIONS' + action.downcase.to_sym else raise HTTPException.new(501) end end - def log_response(status) - logger.info("Completed #{status} #{STATUSES[status]}") - end - def prepare_headers(env) res = {} env.each do |k,v| next unless k =~ /^HTTP_/ res[k.sub(/^HTTP_/, '').downcase.gsub(/-/, '_').to_sym] = v end res - end - - def logger - Restfulness.logger end end end