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
46
47
48
49
50
|
# File 'lib/inbox.rb', line 46
def self.interpret_http_status(result)
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 = {})
self.interpret_http_status(result)
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
raise UnexpectedResponse.new(e.message)
end
|