class JSONAPI::Error

Attributes

code[RW]
detail[RW]
href[RW]
id[RW]
meta[RW]
source[RW]
status[RW]
title[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/jsonapi/error.rb, line 5
def initialize(options = {})
  @title          = options[:title]
  @detail         = options[:detail]
  @id             = options[:id]
  @href           = options[:href]
  @code           = if JSONAPI.configuration.use_text_errors
                      TEXT_ERRORS[options[:code]]
                    else
                      options[:code]
                    end
  @source         = options[:source]
  @links          = options[:links]

  @status         = Rack::Utils::SYMBOL_TO_STATUS_CODE[options[:status]].to_s
  @meta           = options[:meta]
end

Public Instance Methods

to_hash() click to toggle source
# File lib/jsonapi/error.rb, line 22
def to_hash
  hash = {}
  instance_variables.each {|var| hash[var.to_s.delete('@')] = instance_variable_get(var) unless instance_variable_get(var).nil? }
  hash
end
update_with_overrides(error_object_overrides) click to toggle source
# File lib/jsonapi/error.rb, line 28
def update_with_overrides(error_object_overrides)
  @title          = error_object_overrides[:title] || @title
  @detail         = error_object_overrides[:detail] || @detail
  @id             = error_object_overrides[:id] || @id
  @href           = error_object_overrides[:href] || href

  if error_object_overrides[:code]
    # :nocov:
    @code           = if JSONAPI.configuration.use_text_errors
                        TEXT_ERRORS[error_object_overrides[:code]]
                      else
                        error_object_overrides[:code]
                      end
    # :nocov:
  end

  @source         = error_object_overrides[:source] || @source
  @links          = error_object_overrides[:links] || @links

  if error_object_overrides[:status]
    # :nocov:
    @status         = Rack::Utils::SYMBOL_TO_STATUS_CODE[error_object_overrides[:status]].to_s
    # :nocov:
  end
  @meta           = error_object_overrides[:meta] || @meta
end