Sha256: 6f2c9ae7b5c703c32180ad027a74c865d3c6e88fb36e1ce7cf854d38860e87fb

Contents?: true

Size: 436 Bytes

Versions: 9

Compression:

Stored size: 436 Bytes

Contents

module APIClientBase
  class Validate

    def self.call(klass, attrs)
      errors = errors_of(klass, attrs)
      fail(ArgumentError, errors.to_json) if errors.any?
    end

    private

    def self.errors_of(klass, attrs)
      schema = schema_of(klass)
      return [] if schema.nil?
      schema.(attrs).errors
    end

    def self.schema_of(klass)
      "#{klass.name}Schema".constantize
    rescue NameError
    end

  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
api_client_base-1.9.0 lib/api_client_base/services/validate.rb
api_client_base-1.8.0 lib/api_client_base/services/validate.rb
api_client_base-1.7.0 lib/api_client_base/services/validate.rb
api_client_base-1.6.0 lib/api_client_base/services/validate.rb
api_client_base-1.5.0 lib/api_client_base/services/validate.rb
api_client_base-1.4.1 lib/api_client_base/services/validate.rb
api_client_base-1.4.0 lib/api_client_base/services/validate.rb
api_client_base-1.3.0 lib/api_client_base/services/validate.rb
api_client_base-1.2.0 lib/api_client_base/services/validate.rb