Sha256: d5d55bd4c68ab07aad89750876ceeaf42c1610f5a780a35a30fd78222534e7ea

Contents?: true

Size: 1.14 KB

Versions: 5

Compression:

Stored size: 1.14 KB

Contents

require "rack/builder"
require "rack/request"
require "rack/response"
class Rack::App::Middlewares::Configuration

  require "rack/app/middlewares/configuration/path_params_matcher"

  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::REQUEST_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
       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
  end

  def extname(env)
    path_info = env[::Rack::App::Constants::ENV::PATH_INFO]
    File.extname(path_info.split("/").last.to_s)
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rack-app-5.10.2 lib/rack/app/middlewares/configuration.rb
rack-app-5.10.1 lib/rack/app/middlewares/configuration.rb
rack-app-5.10.0 lib/rack/app/middlewares/configuration.rb
rack-app-5.9.0 lib/rack/app/middlewares/configuration.rb
rack-app-5.8.0 lib/rack/app/middlewares/configuration.rb