Exception: Twitter::Error
- Inherits:
-
StandardError
- Object
- StandardError
- Twitter::Error
- Extended by:
- Utils
- Defined in:
- lib/twitter/error.rb
Overview
Custom error class for rescuing from all Twitter errors
Defined Under Namespace
Modules: Code Classes: AlreadyFavorited, AlreadyRetweeted, BadGateway, BadRequest, DuplicateStatus, Forbidden, GatewayTimeout, InternalServerError, InvalidMedia, MediaInternalError, NotAcceptable, NotFound, RequestEntityTooLarge, ServiceUnavailable, TooManyRequests, Unauthorized, UnprocessableEntity, UnsupportedMedia
Constant Summary collapse
- ClientError =
Raised when Twitter returns a 4xx HTTP status code
Class.new(self)
- ServerError =
Raised when Twitter returns a 5xx HTTP status code
Class.new(self)
- MediaError =
Raised when Twitter returns a media related error
Class.new(self)
- TimeoutError =
Raised when an operation subject to timeout takes too long
Class.new(self)
- ERRORS =
Maps HTTP status codes to error classes
{ 400 => Twitter::Error::BadRequest, 401 => Twitter::Error::, 403 => Twitter::Error::Forbidden, 404 => Twitter::Error::NotFound, 406 => Twitter::Error::NotAcceptable, 413 => Twitter::Error::RequestEntityTooLarge, 420 => Twitter::Error::TooManyRequests, 422 => Twitter::Error::UnprocessableEntity, 429 => Twitter::Error::TooManyRequests, 500 => Twitter::Error::InternalServerError, 502 => Twitter::Error::BadGateway, 503 => Twitter::Error::ServiceUnavailable, 504 => Twitter::Error::GatewayTimeout }.freeze
- FORBIDDEN_MESSAGES =
Maps forbidden message patterns to error classes
proc do || case when /(?=.*status).*duplicate/i # - "Status is a duplicate." Twitter::Error::DuplicateStatus when /already favorited/i # - "You have already favorited this status." Twitter::Error::AlreadyFavorited when /already retweeted|Share validations failed/i # - "You have already retweeted this Tweet." (Nov 2017-) # - "You have already retweeted this tweet." (?-Nov 2017) # - "sharing is not permissible for this status (Share validations failed)" (-? 2017) Twitter::Error::AlreadyRetweeted end end
- MEDIA_ERRORS =
Maps media error names to error classes
{ "InternalError" => Twitter::Error::MediaInternalError, "InvalidMedia" => Twitter::Error::InvalidMedia, "UnsupportedMedia" => Twitter::Error::UnsupportedMedia }.freeze
Instance Attribute Summary collapse
-
#code ⇒ Integer
readonly
The error code from Twitter.
-
#rate_limit ⇒ Twitter::RateLimit
readonly
The rate limit information from the response.
Class Method Summary collapse
-
.from_processing_response(error, headers) ⇒ Twitter::MediaError
Creates a new error from a media error hash.
-
.from_response(body, headers) ⇒ Twitter::Error
Creates a new error from an HTTP response.
Instance Method Summary collapse
-
#initialize(message = "", rate_limit = {}, code = nil) ⇒ Twitter::Error
constructor
Initializes a new Error object.
Methods included from Utils
Constructor Details
#initialize(message = "", rate_limit = {}, code = nil) ⇒ Twitter::Error
Initializes a new Error object
272 273 274 275 276 |
# File 'lib/twitter/error.rb', line 272 def initialize( = "", rate_limit = {}, code = nil) super() @rate_limit = RateLimit.new(rate_limit) @code = code end |
Instance Attribute Details
#code ⇒ Integer (readonly)
The error code from Twitter
12 13 14 |
# File 'lib/twitter/error.rb', line 12 def code @code end |
#rate_limit ⇒ Twitter::RateLimit (readonly)
The rate limit information from the response
20 21 22 |
# File 'lib/twitter/error.rb', line 20 def rate_limit @rate_limit end |
Class Method Details
.from_processing_response(error, headers) ⇒ Twitter::MediaError
Creates a new error from a media error hash
224 225 226 227 228 229 |
# File 'lib/twitter/error.rb', line 224 def from_processing_response(error, headers) klass = MEDIA_ERRORS[error[:name]] || self = error[:message] code = error[:code] klass.new(, headers, code) end |
.from_response(body, headers) ⇒ Twitter::Error
Creates a new error from an HTTP response
211 212 213 214 |
# File 'lib/twitter/error.rb', line 211 def from_response(body, headers) , code = parse_error(body) new(, headers, code) end |