module Grape::ErrorFormatter::Json

Public Class Methods

call(message, backtrace, options = {}, env = nil, original_exception = nil) click to toggle source
# File lib/grape/error_formatter/json.rb, line 9
def call(message, backtrace, options = {}, env = nil, original_exception = nil)
  result = wrap_message(present(message, env))

  result = merge_rescue_options(result, backtrace, options, original_exception) if result.is_a?(Hash)

  ::Grape::Json.dump(result)
end

Private Class Methods

ensure_utf8(message) click to toggle source
# File lib/grape/error_formatter/json.rb, line 29
def ensure_utf8(message)
  return message unless message.respond_to? :encode

  message.encode('UTF-8', invalid: :replace, undef: :replace)
end
merge_rescue_options(result, backtrace, options, original_exception) click to toggle source
# File lib/grape/error_formatter/json.rb, line 35
def merge_rescue_options(result, backtrace, options, original_exception)
  rescue_options = options[:rescue_options] || {}
  result = result.merge(backtrace: backtrace) if rescue_options[:backtrace] && backtrace && !backtrace.empty?
  result = result.merge(original_exception: original_exception.inspect) if rescue_options[:original_exception] && original_exception

  result
end
wrap_message(message) click to toggle source
# File lib/grape/error_formatter/json.rb, line 19
def wrap_message(message)
  if message.is_a?(Hash)
    message
  elsif message.is_a?(Exceptions::ValidationErrors)
    message.as_json
  else
    { error: ensure_utf8(message) }
  end
end