Sha256: 9a3ad3b19eeac8c360aa2ce0512446fcb2ab70be6d5c9912f84a29cc53c44bb1

Contents?: true

Size: 907 Bytes

Versions: 34

Compression:

Stored size: 907 Bytes

Contents

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

  def initialize(app, descriptor)
    @app = app
    @descriptor = descriptor
    @merged_params_descriptor = descriptor.values.reduce(:merge)
  end

  def call(env)
    set_params(env)

    @app.call(env)
  end

  protected

  def set_params(env)
    params = Rack::App::Params.new(env).to_hash
    validated_params = (env[::Rack::App::Constants::ENV::VALIDATED_PARAMS] ||= {})
    parse_params(validated_params, params)
  end

  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

  def parse(type, str)
    Rack::App::Utils::Parser.parse(type, str)
  end

end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
rack-app-6.8.0 lib/rack/app/middlewares/params/parser.rb
rack-app-6.7.1 lib/rack/app/middlewares/params/parser.rb
rack-app-6.7.0 lib/rack/app/middlewares/params/parser.rb
rack-app-6.6.0 lib/rack/app/middlewares/params/parser.rb
rack-app-6.5.0 lib/rack/app/middlewares/params/parser.rb
rack-app-6.4.1 lib/rack/app/middlewares/params/parser.rb
rack-app-6.4.0 lib/rack/app/middlewares/params/parser.rb
rack-app-6.3.3 lib/rack/app/middlewares/params/parser.rb
rack-app-6.3.2 lib/rack/app/middlewares/params/parser.rb
rack-app-6.3.1 lib/rack/app/middlewares/params/parser.rb
rack-app-6.3.0 lib/rack/app/middlewares/params/parser.rb
rack-app-6.2.0 lib/rack/app/middlewares/params/parser.rb
rack-app-6.1.0 lib/rack/app/middlewares/params/parser.rb
rack-app-6.0.0 lib/rack/app/middlewares/params/parser.rb
rack-app-5.12.0 lib/rack/app/middlewares/params/parser.rb
rack-app-5.11.1 lib/rack/app/middlewares/params/parser.rb
rack-app-5.11.0 lib/rack/app/middlewares/params/parser.rb
rack-app-5.10.2 lib/rack/app/middlewares/params/parser.rb
rack-app-5.10.1 lib/rack/app/middlewares/params/parser.rb
rack-app-5.10.0 lib/rack/app/middlewares/params/parser.rb