module Datacentred::Errors

Behaviours and exceptions for recoverable errors.

Public Class Methods

raise_unless_successful(status, body) click to toggle source

Test server response and raise appropriate error if an error has been returned.

@raise [Error] Appropriate error for server response code. @return [nil] Returns nil on success

# File lib/datacentred/error.rb, line 8
def self.raise_unless_successful(status, body)
  return if status.to_s.start_with? "2" # 2xx
  err = errors[status]
  message = body&.fetch("errors")&.first&.fetch("detail")
  if err
    raise err, message || status.to_s
  else
    raise Error, "Error #{status}: #{message}"
  end
end

Private Class Methods

errors() click to toggle source
# File lib/datacentred/error.rb, line 42
def self.errors
  {
    401 => Datacentred::Errors::Unauthorized,
    404 => Datacentred::Errors::NotFound,
    422 => Datacentred::Errors::UnprocessableEntity
  }
end