Sha256: ea97856c276e4610f30d5a6fb42af5e6a41de42da4f66646003fb43d6a55746f

Contents?: true

Size: 1.04 KB

Versions: 5

Compression:

Stored size: 1.04 KB

Contents

module Praxis

  module Responses

    class ValidationError < BadRequest
      def initialize(errors: nil, exception: nil, message: nil, **opts)
        super(**opts)
        @headers['Content-Type'] = 'application/json' #TODO: might want an error mediatype
        @errors = errors
        @exception = exception
        @message = message || (exception && exception.message)
      end

      def format!
        if @errors
          @body = {name: 'ValidationError', errors: @errors}
        elsif @message
          @body = {name: 'ValidationError', message: @message}
        end

        if @exception && @exception.cause
          @body[:cause] = {name: @exception.cause.class.name, message: @exception.cause.message}
        end

        @body
      end
    end

  end


  ApiDefinition.define do |api|
    api.response_template :validation_error do
      description "An error message indicating that one or more elements of the request did not match the API specification for the action"
      status 400
      media_type "application/json"
    end
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
praxis-0.16.1 lib/praxis/responses/validation_error.rb
praxis-0.16.0 lib/praxis/responses/validation_error.rb
praxis-0.15.0 lib/praxis/responses/validation_error.rb
praxis-0.14.0 lib/praxis/responses/validation_error.rb
praxis-0.13.0 lib/praxis/responses/validation_error.rb