class Grape::Exceptions::Base

Constants

BASE_ATTRIBUTES_KEY
BASE_MESSAGES_KEY
FALLBACK_LOCALE

Attributes

headers[R]
message[R]
status[R]

Public Class Methods

new(status: nil, message: nil, headers: nil, **_options) click to toggle source
# File lib/grape/exceptions/base.rb, line 10
def initialize(status: nil, message: nil, headers: nil, **_options)
  @status  = status
  @message = message
  @headers = headers
end

Public Instance Methods

[](index) click to toggle source
# File lib/grape/exceptions/base.rb, line 16
def [](index)
  send index
end

Protected Instance Methods

compose_message(key, **attributes) click to toggle source

TODO: translate attribute first if BASE_ATTRIBUTES_KEY.key respond to a string message, then short_message is returned if BASE_ATTRIBUTES_KEY.key respond to a Hash, means it may have problem , summary and resolution

# File lib/grape/exceptions/base.rb, line 25
def compose_message(key, **attributes)
  short_message = translate_message(key, **attributes)
  if short_message.is_a? Hash
    @problem = problem(key, **attributes)
    @summary = summary(key, **attributes)
    @resolution = resolution(key, **attributes)
    [['Problem', @problem], ['Summary', @summary], ['Resolution', @resolution]].reduce('') do |message, detail_array|
      message << "\n#{detail_array[0]}:\n  #{detail_array[1]}" unless detail_array[1].blank?
      message
    end
  else
    short_message
  end
end
problem(key, attributes) click to toggle source
# File lib/grape/exceptions/base.rb, line 40
def problem(key, attributes)
  translate_message("#{key}.problem".to_sym, attributes)
end
resolution(key, attributes) click to toggle source
# File lib/grape/exceptions/base.rb, line 48
def resolution(key, attributes)
  translate_message("#{key}.resolution".to_sym, attributes)
end
summary(key, attributes) click to toggle source
# File lib/grape/exceptions/base.rb, line 44
def summary(key, attributes)
  translate_message("#{key}.summary".to_sym, attributes)
end
translate(key, **options) click to toggle source
# File lib/grape/exceptions/base.rb, line 73
def translate(key, **options)
  options = options.dup
  options[:default] &&= options[:default].to_s
  message = ::I18n.translate(key, **options)
  message.present? ? message : ::I18n.translate(key, locale: FALLBACK_LOCALE, **options)
end
translate_attribute(key, **options) click to toggle source
# File lib/grape/exceptions/base.rb, line 58
def translate_attribute(key, **options)
  translate("#{BASE_ATTRIBUTES_KEY}.#{key}", default: key, **options)
end
translate_attributes(keys, **options) click to toggle source
# File lib/grape/exceptions/base.rb, line 52
def translate_attributes(keys, **options)
  keys.map do |key|
    translate("#{BASE_ATTRIBUTES_KEY}.#{key}", default: key, **options)
  end.join(', ')
end
translate_message(key, **options) click to toggle source
# File lib/grape/exceptions/base.rb, line 62
def translate_message(key, **options)
  case key
  when Symbol
    translate("#{BASE_MESSAGES_KEY}.#{key}", default: '', **options)
  when Proc
    key.call
  else
    key
  end
end