Sha256: dc5d1dcc9f1b66ac93b523c5bbb68c9b24b5416788f1bcfe8a01e6992f916768

Contents?: true

Size: 904 Bytes

Versions: 3

Compression:

Stored size: 904 Bytes

Contents

require 'uri'

module Judge
  module Controller

    def self.included(base)
      base.clear_respond_to
      base.respond_to(:json)
    end

    def validation(params)
      params = normalize_validation_params(params)
      if params[:klass] && Judge.config.exposed?(params[:klass], params[:attribute])
        Validation.new(params)
      else
        NullValidation.new(params)
      end
    end

    private

      def normalize_validation_params(params)
        params.keep_if { |key| %w{klass attribute value kind}.include?(key) }
        params[:klass]     = find_klass(params[:klass])
        params[:attribute] = params[:attribute].to_sym
        params[:value]     = URI.decode(params[:value])
        params[:kind]      = params[:kind].to_sym
        params
      end

      def find_klass(name)
        Module.const_get(name.classify)
      rescue NameError
        nil
      end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
judge-2.0.3 lib/judge/controller.rb
judge-2.0.2 lib/judge/controller.rb
judge-2.0.1 lib/judge/controller.rb