Sha256: b183ba449c2129dd64ef870ebd7a2031e798f0d6fed5a672106626e7d70356a8

Contents?: true

Size: 1 KB

Versions: 2

Compression:

Stored size: 1 KB

Contents

module Praxis

  module Responses

    # A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.
    class InternalServerError < Praxis::Response
      self.status = 500
      attr_accessor :error

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

      def format!(exception = @error) #_exception(exception)
        if @error
          msg = {
            name: exception.class.name,
            message: exception.message,
            backtrace: exception.backtrace
          }
          msg[:cause] = format!(exception.cause) if exception.cause
          @body = msg
        end
      end
    end

  end

  ApiDefinition.define do |api|
    api.response_template :internal_server_error do
      description "When an internal server error occurs..."
      status 500
      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/internal_server_error.rb
praxis-0.10.0 lib/praxis/responses/internal_server_error.rb