Module: Inbox

Defined in:
lib/file.rb,
lib/draft.rb,
lib/event.rb,
lib/inbox.rb,
lib/label.rb,
lib/nylas.rb,
lib/folder.rb,
lib/mixins.rb,
lib/account.rb,
lib/contact.rb,
lib/message.rb,
lib/version.rb,
lib/calendar.rb,
lib/api_thread.rb,
lib/parameters.rb,
lib/api_account.rb,
lib/restful_model.rb,
lib/time_attr_accessor.rb,
lib/restful_model_collection.rb

Defined Under Namespace

Modules: Parameters, ReadUnreadMethods, TimeAttrAccessor Classes: API, APIAccount, APIError, Account, Calendar, Contact, Draft, Event, ExpandedMessage, File, Folder, ManagementModelCollection, Message, RestfulModel, RestfulModelCollection, Thread

Constant Summary collapse

Error =
Class.new(::StandardError)
AccessDenied =
Class.new(Error)
ResourceNotFound =
Class.new(Error)
NoAuthToken =
Class.new(Error)
UnexpectedAccountAction =
Class.new(Error)
UnexpectedResponse =
Class.new(Error)
InvalidRequest =
Class.new(APIError)
MessageRejected =
Class.new(APIError)
SendingQuotaExceeded =
Class.new(APIError)
ServiceUnavailable =
Class.new(APIError)
HTTP_CODE_TO_EXCEPTIONS =
{
  400 => InvalidRequest,
  402 => MessageRejected,
  403 => AccessDenied,
  404 => ResourceNotFound,
  429 => SendingQuotaExceeded,
  503 => ServiceUnavailable
}.freeze
Label =
Folder.clone
VERSION =
"2.0.1"

Class Method Summary collapse

Class Method Details

.http_code_to_exception(http_code) ⇒ Object



61
62
63
# File 'lib/inbox.rb', line 61

def self.http_code_to_exception(http_code)
  HTTP_CODE_TO_EXCEPTIONS.fetch(http_code, APIError)
end

.interpret_http_status(result) ⇒ Object

Raises:



46
47
48
49
50
# File 'lib/inbox.rb', line 46

def self.interpret_http_status(result)
  # Handle HTTP errors and RestClient errors
  raise ResourceNotFound.new if result.code.to_i == 404
  raise AccessDenied.new if result.code.to_i == 403
end

.interpret_response(result, result_content, options = {}) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/inbox.rb', line 65

def self.interpret_response(result, result_content, options = {})
  # Handle HTTP errors
  self.interpret_http_status(result)

  # Handle content expectation errors
  raise UnexpectedResponse.new if options[:expected_class] && result_content.empty?
  json = options[:result_parsed]? result_content : JSON.parse(result_content)
  if json.is_a?(Hash) && (json['type'] == 'api_error' or json['type'] == 'invalid_request_error')
    exc = Inbox.http_code_to_exception(result.code.to_i)
    raise exc.new(json['type'], json['message'])
  end
  raise UnexpectedResponse.new(result.msg) if result.is_a?(Net::HTTPClientError)
  raise UnexpectedResponse.new if options[:expected_class] && !json.is_a?(options[:expected_class])
  json

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