Exception: Instapaper::Error
- Inherits:
-
StandardError
- Object
- StandardError
- Instapaper::Error
- Defined in:
- lib/instapaper/error.rb
Overview
Custom error class for rescuing from all Instapaper errors
Constant Summary collapse
- ClientError =
Class.new(self)
- ServerError =
Class.new(self)
Class.new(self)
- BookmarkError =
Class.new(self)
- FolderError =
Class.new(self)
- HighlightError =
Class.new(self)
- OAuthError =
Class.new(self)
- CLIENT_ERRORS =
{ 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', }
- SERVER_ERRORS =
{ 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', }
- SERVICE_ERRORS =
{ 1040 => 'Rate-limit exceeded', 1041 => 'Premium account required', 1042 => 'Application is suspended', 1500 => 'Unexpected service error', 1550 => 'Error generating text version of this URL', }
- BOOKMARK_ERRORS =
{ 1220 => 'Domain requires full content to be supplied', 1221 => 'Domain has opted out of Instapaper compatibility', 1240 => 'Invalid URL specified', 1241 => 'Invalid or missing bookmark_id', 1242 => 'Invalid or missing folder_id', 1243 => 'Invalid or missing progress', 1244 => 'Invalid or missing progress_timestamp', 1245 => 'Private bookmarks require supplied content', 1250 => 'Unexpected error when saving bookmark', }
- FOLDER_ERRORS =
{ 1250 => 'Invalid or missing title', 1251 => 'User already has a folder with this title', 1252 => 'Cannot add bookmarks to this folder', }
- HIGHLIGHT_ERRORS =
{ 1600 => 'Cannot create highlight with empty text', 1601 => 'Duplicate highlight', }
- CODES =
[ CLIENT_ERRORS, SERVER_ERRORS, SERVICE_ERRORS, BOOKMARK_ERRORS, FOLDER_ERRORS, HIGHLIGHT_ERRORS, ].collect(&:keys).flatten
- HTTP_ERRORS =
CLIENT_ERRORS.merge(SERVER_ERRORS)
Instance Attribute Summary collapse
- #code ⇒ Integer readonly
Class Method Summary collapse
-
.from_response(code, path) ⇒ Instapaper::Error
Create a new error from an HTTP response.
-
.from_response_code(code) ⇒ Instapaper::Error
Create a new error from an HTTP response code.
Instance Method Summary collapse
-
#initialize(message = '', code = nil) ⇒ Instapaper::Error
constructor
Initializes a new Error object.
Constructor Details
#initialize(message = '', code = nil) ⇒ Instapaper::Error
Initializes a new Error object
110 111 112 113 |
# File 'lib/instapaper/error.rb', line 110 def initialize( = '', code = nil) super() @code = code end |
Instance Attribute Details
#code ⇒ Integer (readonly)
5 6 7 |
# File 'lib/instapaper/error.rb', line 5 def code @code end |
Class Method Details
.from_response(code, path) ⇒ Instapaper::Error
Create a new error from an HTTP response
78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/instapaper/error.rb', line 78 def self.from_response(code, path) if (HTTP_ERRORS.keys + SERVICE_ERRORS.keys).include?(code) from_response_code(code) else case path when /highlights/ then HighlightError.new(HIGHLIGHT_ERRORS[code], code) when /bookmarks/ then BookmarkError.new(BOOKMARK_ERRORS[code], code) when /folders/ then FolderError.new(FOLDER_ERRORS[code], code) else new('Unknown Error', code) end end end |
.from_response_code(code) ⇒ Instapaper::Error
Create a new error from an HTTP response code
95 96 97 98 99 100 101 102 103 |
# File 'lib/instapaper/error.rb', line 95 def self.from_response_code(code) if CLIENT_ERRORS.keys.include?(code) ClientError.new(CLIENT_ERRORS[code], code) elsif SERVER_ERRORS.keys.include?(code) ServerError.new(SERVER_ERRORS[code], code) elsif SERVICE_ERRORS.keys.include?(code) new(SERVICE_ERRORS[code], code) end end |