class Rack::App::Middlewares::Params::Parser

Public Class Methods

new(app, descriptor) click to toggle source
# File lib/rack/app/middlewares/params/parser.rb, line 3
def initialize(app, descriptor)
  @app = app
  @descriptor = descriptor
  @merged_params_descriptor = descriptor.values.reduce(:merge)
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/app/middlewares/params/parser.rb, line 9
def call(env)
  set_params(env)

  @app.call(env)
end

Protected Instance Methods

parse(type, str) click to toggle source
# File lib/rack/app/middlewares/params/parser.rb, line 36
def parse(type, str)
  Rack::App::Utils::Parser.parse(type, str)
end
parse_params(validated_params, params) click to toggle source
# File lib/rack/app/middlewares/params/parser.rb, line 23
def parse_params(validated_params, params)
  @merged_params_descriptor.each do |key, properties|
    next if params[key].nil?

    if properties[:of]
      validated_params[key]= [*params[key]].map{ |str| parse(properties[:of], str) }
    else
      validated_params[key]= parse(properties[:class], params[key])
    end

  end
end
set_params(env) click to toggle source
# File lib/rack/app/middlewares/params/parser.rb, line 17
def set_params(env)
  params = Rack::App::Params.new(env).merged_params
  validated_params = (env[::Rack::App::Constants::ENV::VALIDATED_PARAMS] ||= {})
  parse_params(validated_params, params)
end