lib/rack/app/middlewares/configuration.rb in rack-app-8.1.0 vs lib/rack/app/middlewares/configuration.rb in rack-app-9.0.0
- old
+ new
@@ -1,33 +1,40 @@
require "rack/builder"
require "rack/request"
require "rack/response"
+
class Rack::App::Middlewares::Configuration
def initialize(app, config)
@app = app || raise
@serializer = config.serializer || raise
@handler_class = config.app_class || raise
@payload_parser = config.payload_builder.to_parser || raise
end
def call(env)
- env[::Rack::App::Constants::ENV::HANDLER]= handler(env)
- env[::Rack::App::Constants::ENV::SERIALIZER]= @serializer
- env[::Rack::App::Constants::ENV::PAYLOAD_PARSER]= @payload_parser
- env[::Rack::App::Constants::ENV::PAYLOAD_GETTER]= lambda do
+ setup_handler(env)
+ env[::Rack::App::Constants::ENV::SERIALIZER] = @serializer
+ env[::Rack::App::Constants::ENV::PAYLOAD_PARSER] = @payload_parser
+ env[::Rack::App::Constants::ENV::PAYLOAD_GETTER] = lambda do
env[::Rack::App::Constants::ENV::PARSED_PAYLOAD] ||= env[::Rack::App::Constants::ENV::PAYLOAD_PARSER].parse_env(env)
end
@app.call(env)
end
protected
- def handler(env)
- new_handler = @handler_class.new
- new_handler.request = ::Rack::Request.new(env)
- new_handler.response = ::Rack::Response.new
- new_handler
+ def setup_handler(env)
+ request = ::Rack::Request.new(env)
+ response = ::Rack::Response.new
+ h = @handler_class.new
+ h.env = env
+ h.request = request
+ h.response = response
+ handlers = ::Rack::App::Handlers.new(env, request, response)
+ handlers[@handler_class] = h
+ env[::Rack::App::Constants::ENV::HANDLERS] = handlers
+ env[::Rack::App::Constants::ENV::HANDLER] = handlers[@handler_class]
end
def extname(env)
path_info = env[::Rack::App::Constants::ENV::PATH_INFO]
File.extname(path_info.split("/").last.to_s)