class Rack::App::Middlewares::SetPathParams

Constants

E

Public Class Methods

new(app, build_env) click to toggle source
# File lib/rack/app/middlewares/set_path_params.rb, line 3
def initialize(app, build_env)
  @build_env = build_env
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/app/middlewares/set_path_params.rb, line 10
def call(env)
  populate_path_params(env)
  correct_last_value_from_extensions(env)
  @app.call(env)
end

Protected Instance Methods

correct_last_value_from_extensions(env) click to toggle source
# File lib/rack/app/middlewares/set_path_params.rb, line 24
def correct_last_value_from_extensions(env)
  return if @build_env.endpoint.config.serializer.extnames.empty?
  last_index = env[E::SPLITTED_PATH_INFO].length - 1
  return if @build_env.params[last_index].nil?
  extless(env[E::PATH_SEGMENTS_PARAMS][@build_env.params[last_index]])
end
extless(value) click to toggle source
# File lib/rack/app/middlewares/set_path_params.rb, line 31
def extless(value)
  extname = File.extname(value)
  return unless @build_env.endpoint.config.serializer.extnames.include?(extname)
  value.slice!(/#{Regexp.escape(extname)}$/) unless extname.empty?
end
populate_path_params(env) click to toggle source
# File lib/rack/app/middlewares/set_path_params.rb, line 18
def populate_path_params(env)
  @build_env.params.each do |index, key|
    env[E::PATH_SEGMENTS_PARAMS][key] = env[E::SPLITTED_PATH_INFO][index]
  end
end