Module: Inbox

Defined in:
lib/tag.rb,
lib/file.rb,
lib/draft.rb,
lib/event.rb,
lib/inbox.rb,
lib/label.rb,
lib/nylas.rb,
lib/folder.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, TimeAttrAccessor Classes: API, APIAccount, APIError, AccessDenied, Account, Calendar, Contact, Draft, Event, File, Folder, InvalidRequest, ManagementModelCollection, Message, MessageRejected, NoAuthToken, ResourceNotFound, RestfulModel, RestfulModelCollection, SendingQuotaExceeded, ServiceUnavailable, Tag, Thread, UnexpectedAccountAction, UnexpectedResponse

Constant Summary collapse

Label =
Folder.clone
VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.interpret_http_status(result) ⇒ Object

Raises:



44
45
46
47
48
# File 'lib/inbox.rb', line 44

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



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/inbox.rb', line 50

def self.interpret_response(result, result_content, options = {})
  # Handle HTTP errors
  Inbox.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')
    if result.code.to_i == 400
      exc = InvalidRequest
    elsif result.code.to_i == 402
      exc = MessageRejected
    elsif result.code.to_i == 429
      exc = SendingQuotaExceeded
    elsif result.code.to_i == 503
      exc = ServiceUnavailable
    else
      exc = APIError
    end
    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