lib/reel/rack/server.rb in reel-rack-0.1.0 vs lib/reel/rack/server.rb in reel-rack-0.2.0

- old
+ new

@@ -3,11 +3,11 @@ require 'reel' require 'rack' module Reel module Rack - class Server < Server + class Server < Reel::Server::HTTP include Celluloid::Logger attr_reader :app def initialize(app, options) @@ -51,14 +51,25 @@ request.respond :internal_server_error, "An error occurred processing your request" end body.close if body.respond_to? :close end - + + # Those headers must not start with 'HTTP_'. + NO_PREFIX_HEADERS=%w[CONTENT_TYPE CONTENT_LENGTH].freeze + def convert_headers(headers) - Hash[headers.map { |key, value| ['HTTP_' + key.upcase.gsub('-','_'),value ] }] + Hash[headers.map { |key, value| + header = key.upcase.gsub('-','_') + + if NO_PREFIX_HEADERS.member?(header) + [header, value] + else + ['HTTP_' + header, value] + end + }] end - + def status_symbol(status) if status.is_a?(Fixnum) Http::Response::STATUS_CODES[status].downcase.gsub(/\s|-/, '_').to_sym else status.to_sym