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