class Facebook::Messenger::Bot::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) 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/facebook/messenger/bot/error_parser.rb, line 40
def raise_errors_from(response)
  return unless response.key? 'error'

  error = response['error']

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

  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, error
end

Private Class Methods

access_token_error?(error_code) click to toggle source
# File lib/facebook/messenger/bot/error_parser.rb, line 79
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/facebook/messenger/bot/error_parser.rb, line 83
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/facebook/messenger/bot/error_parser.rb, line 94
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/facebook/messenger/bot/error_parser.rb, line 75
def internal_error?(error_code)
  INTERNAL_ERROR_CODES.key? error_code
end
limit_error?(error_code, error_subcode) click to toggle source
# File lib/facebook/messenger/bot/error_parser.rb, line 87
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/facebook/messenger/bot/error_parser.rb, line 101
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/facebook/messenger/bot/error_parser.rb, line 58
def raise_code_only_error(error_code, args)
  raise InternalError, args       if internal_error?(error_code)
  raise AccessTokenError, args    if access_token_error?(error_code)
  raise AccountLinkingError, args if account_linking_error?(
    error_code
  )
end
raise_code_subcode_error(error_code, error_subcode, args) click to toggle source
# File lib/facebook/messenger/bot/error_parser.rb, line 66
def raise_code_subcode_error(error_code, error_subcode, args)
  raise LimitError, args        if limit_error?(error_code,
                                                error_subcode)
  raise BadParameterError, args if bad_parameter_error?(error_code,
                                                        error_subcode)
  raise PermissionError, args   if permission_error?(error_code,
                                                     error_subcode)
end