module Nylas

Constants

AccessDenied
BadGateway
Error
HTTP_CODE_TO_EXCEPTIONS
InternalError
InvalidRequest
Label
MailProviderError
MessageRejected
NoAuthToken
ResourceNotFound
SendingQuotaExceeded
ServiceUnavailable
UnexpectedAccountAction
UnexpectedResponse
VERSION

Public Class Methods

http_code_to_exception(http_code) click to toggle source
# File lib/nylas.rb, line 66
def self.http_code_to_exception(http_code)
  HTTP_CODE_TO_EXCEPTIONS.fetch(http_code, APIError)
end
interpret_response(result, result_content, options = {}) click to toggle source
# File lib/nylas.rb, line 70
def self.interpret_response(result, result_content, options = {})

  # We expected a certain kind of object, but the API didn't return anything
  raise UnexpectedResponse.new if options[:expected_class] && result_content.empty?

  # If it's already parsed, or if we've received an actual raw payload on success, don't parse
  if options[:result_parsed] || (options[:raw_response] && result.code.to_i == 200)
    response = result_content
  else
    response = JSON.parse(result_content)
  end

  if result.code.to_i != 200
    exc = Nylas.http_code_to_exception(result.code.to_i)
    if response.is_a?(Hash)
      raise exc.new(response['type'], response['message'], response.fetch('server_error', nil))
    end
  end

  raise UnexpectedResponse.new(result.msg) if result.is_a?(Net::HTTPClientError)
  raise UnexpectedResponse.new if options[:expected_class] && !response.is_a?(options[:expected_class])
  response

rescue JSON::ParserError => e
  # Handle parsing errors
  raise UnexpectedResponse.new(e.message)
end