Sha256: adf28cf48f26ba0d2b3ab5a93fc92df68cf0286f7823f1875fa4f330c90f1b09

Contents?: true

Size: 1.31 KB

Versions: 27

Compression:

Stored size: 1.31 KB

Contents

module Gitlab
  module Triage
    class ParamsValidator
      InvalidParameter = Class.new(ArgumentError)

      def initialize(parameter_definitions, value)
        @parameter_definitions = parameter_definitions
        @value = value
      end

      def validate!
        validate_required_parameters(@value)
        validate_parameter_types(@value)
        validate_parameter_content(@value)
      end

      private

      def validate_required_parameters(value)
        @parameter_definitions.each do |param|
          raise InvalidParameter, "#{param[:name]} is a required parameter" unless value[param[:name]]
        end
      end

      def validate_parameter_types(value)
        @parameter_definitions.each do |param|
          if value.has_key?(param[:name])
            param_types = Array(param[:type]).flatten
            raise InvalidParameter, "#{param[:name]} must be of type #{param[:type]}" unless param_types.any? { |type| value[param[:name]].is_a?(type) }
          end
        end
      end

      def validate_parameter_content(value)
        @parameter_definitions.each do |param|
          if param[:values]
            raise InvalidParameter, "#{param[:name]} must be one of #{param[:values].join(',')}" unless param[:values].include?(value[param[:name]])
          end
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
gitlab-triage-1.42.2 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.42.1 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.42.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.41.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.40.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.30.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.29.0 lib/gitlab/triage/validators/params_validator.rb
payping-gitlab-triage-0.1.3 lib/gitlab/triage/validators/params_validator.rb
payping-gitlab-triage-0.1.2 lib/gitlab/triage/validators/params_validator.rb
payping-gitlab-triage-0.1.1 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.28.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.27.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.26.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.25.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.24.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.23.1 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.23.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.22.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.21.0 lib/gitlab/triage/validators/params_validator.rb
gitlab-triage-1.20.0 lib/gitlab/triage/validators/params_validator.rb