Sha256: 750d3617d52bb3fdb502623d930cbd8853df4d6720065886597b91cf67fa4474

Contents?: true

Size: 911 Bytes

Versions: 2

Compression:

Stored size: 911 Bytes

Contents

module Praxis

  module Responses

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

      def format!
        if @errors
          @body = {name: 'ValidationError', errors: @errors}
        elsif @exception
          @body = {name: 'ValidationError', message: @exception.message}
          if @exception.cause
            @body[:cause] = {name: @exception.cause.class.name, message: @exception.cause.message}
          end
          @body
        end
      end
    end

  end


  ApiDefinition.define do |api|
    api.response_template :validation_error do
      description "When parameter validation hits..."
      status 400
      media_type "application/json"
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
praxis-0.10.1 lib/praxis/responses/validation_error.rb
praxis-0.10.0 lib/praxis/responses/validation_error.rb