class Bobot::ErrorParser

Parses and raises Facebook response errors for the send API.

Constants

ACCESS_TOKEN_ERROR_CODES
ACCOUNT_LINKING_ERROR_CODES
BAD_PARAMETER_ERROR_CODES
INTERNAL_ERROR_CODES
LIMIT_ERROR_CODES
PERMISSION_ERROR_CODES

Public Class Methods

raise_errors_from(response, extras = {}) click to toggle source

Raise any errors in the given response.

response - A HTTParty::Response object.

Returns nil if no errors were found, otherwises raises appropriately

# File lib/bobot/error_parser.rb, line 38
def raise_errors_from(response, extras = {})
  return false if response.nil? || !response.key?('error')

  error = response['error']

  error_code = error['code']
  error_subcode = error['error_subcode']

  error['extras'] = extras

  raise_code_only_error(error_code, error) if error_subcode.nil?

  raise_code_subcode_error(error_code, error_subcode, error)

  # Default to unidentified error
  raise FacebookError.new(error)
end

Private Class Methods

access_token_error?(error_code) click to toggle source
# File lib/bobot/error_parser.rb, line 74
def access_token_error?(error_code)
  ACCESS_TOKEN_ERROR_CODES.key?(error_code)
end
account_linking_error?(error_code) click to toggle source
# File lib/bobot/error_parser.rb, line 78
def account_linking_error?(error_code)
  ACCOUNT_LINKING_ERROR_CODES.key?(error_code)
end
bad_parameter_error?(error_code, error_subcode) click to toggle source
# File lib/bobot/error_parser.rb, line 89
def bad_parameter_error?(error_code, error_subcode)
  bad_parameter_errors = BAD_PARAMETER_ERROR_CODES[error_code]
  return unless bad_parameter_errors

  bad_parameter_errors.include? error_subcode
end
internal_error?(error_code) click to toggle source
# File lib/bobot/error_parser.rb, line 70
def internal_error?(error_code)
  INTERNAL_ERROR_CODES.key?(error_code)
end
limit_error?(error_code, error_subcode) click to toggle source
# File lib/bobot/error_parser.rb, line 82
def limit_error?(error_code, error_subcode)
  limit_errors = LIMIT_ERROR_CODES[error_code]
  return unless limit_errors

  limit_errors.include? error_subcode
end
permission_error?(error_code, error_subcode) click to toggle source
# File lib/bobot/error_parser.rb, line 96
def permission_error?(error_code, error_subcode)
  permission_errors = PERMISSION_ERROR_CODES[error_code]
  return unless permission_errors

  permission_errors.include? error_subcode
end
raise_code_only_error(error_code, args) click to toggle source
# File lib/bobot/error_parser.rb, line 58
def raise_code_only_error(error_code, args)
  raise InternalError.new(args)       if internal_error?(error_code)
  raise AccessTokenError.new(args)    if access_token_error?(error_code)
  raise AccountLinkingError.new(args) if account_linking_error?(error_code)
end
raise_code_subcode_error(error_code, error_subcode, args) click to toggle source
# File lib/bobot/error_parser.rb, line 64
def raise_code_subcode_error(error_code, error_subcode, args)
  raise LimitError.new(args)        if limit_error?(error_code, error_subcode)
  raise BadParameterError.new(args) if bad_parameter_error?(error_code, error_subcode)
  raise PermissionError.new(args)   if permission_error?(error_code, error_subcode)
end