class FmRest::V1::RaiseErrors

FM Data API response middleware for raising exceptions on API response errors

fmhelp.filemaker.com/help/17/fmp/en/index.html#page/FMP_Help/error-codes.html

Constants

ERROR_RANGES

fmhelp.filemaker.com/help/17/fmp/en/index.html#page/FMP_Help/error-codes.html

Public Instance Methods

on_complete(env) click to toggle source
# File lib/fmrest/v1/raise_errors.rb, line 30
def on_complete(env)
  # Sniff for either straight JSON parsing or Spyke's format
  if env.body[:metadata] && env.body[:metadata][:messages]
    check_errors(env.body[:metadata][:messages])
  elsif env.body["messages"]
    check_errors(env.body["messages"])
  end
end

Private Instance Methods

check_errors(messages) click to toggle source
# File lib/fmrest/v1/raise_errors.rb, line 41
def check_errors(messages)
  messages.each do |message|
    error_code = (message["code"] || message[:code]).to_i

    # Code 0 means "No Error"
    next if error_code.zero?

    error_message = message["message"] || message[:message]

    *, exception_class = ERROR_RANGES.find { |k, v| k === error_code }

    raise (exception_class || APIError).new(error_code, error_message)
  end
end