class Grape::Validations::ContractScope::Validator

Attributes

schema[R]

Public Class Methods

new(*_args, schema:) click to toggle source
# File lib/grape/validations/contract_scope.rb, line 36
def initialize(*_args, schema:)
  @schema = schema
end

Public Instance Methods

fail_fast?() click to toggle source
# File lib/grape/validations/contract_scope.rb, line 65
def fail_fast?
  false
end
validate(request) click to toggle source

Validates a given request. @param request [Grape::Request] the request currently being handled @raise [Grape::Exceptions::ValidationArrayErrors] if validation failed @return [void]

# File lib/grape/validations/contract_scope.rb, line 44
def validate(request)
  res = schema.call(request.params)

  if res.success?
    request.params.deep_merge!(res.to_h)
    return
  end

  errors = []

  res.errors.messages.each do |message|
    full_name = message.path.first.to_s

    full_name += "[#{message.path[1..].join('][')}]" if message.path.size > 1

    errors << Grape::Exceptions::Validation.new(params: [full_name], message: message.text)
  end

  raise Grape::Exceptions::ValidationArrayErrors.new(errors)
end