Exception: Twitter::Error

Inherits:
StandardError
  • Object
show all
Extended by:
Utils
Defined in:
lib/twitter/error.rb

Overview

Custom error class for rescuing from all Twitter errors

Defined Under Namespace

Modules: Code

Constant Summary collapse

ClientError =

Raised when Twitter returns a 4xx HTTP status code

Class.new(self)
BadRequest =

Raised when Twitter returns the HTTP status code 400

Class.new(ClientError)
Unauthorized =

Raised when Twitter returns the HTTP status code 401

Class.new(ClientError)
Forbidden =

Raised when Twitter returns the HTTP status code 403

Class.new(ClientError)
RequestEntityTooLarge =

Raised when Twitter returns the HTTP status code 413

Class.new(ClientError)
AlreadyFavorited =

Raised when a Tweet has already been favorited

Class.new(Forbidden)
AlreadyRetweeted =

Raised when a Tweet has already been retweeted

Class.new(Forbidden)
DuplicateStatus =

Raised when a Tweet has already been posted

Class.new(Forbidden)
NotFound =

Raised when Twitter returns the HTTP status code 404

Class.new(ClientError)
NotAcceptable =

Raised when Twitter returns the HTTP status code 406

Class.new(ClientError)
UnprocessableEntity =

Raised when Twitter returns the HTTP status code 422

Class.new(ClientError)
TooManyRequests =

Raised when Twitter returns the HTTP status code 429

Class.new(ClientError)
ServerError =

Raised when Twitter returns a 5xx HTTP status code

Class.new(self)
InternalServerError =

Raised when Twitter returns the HTTP status code 500

Class.new(ServerError)
BadGateway =

Raised when Twitter returns the HTTP status code 502

Class.new(ServerError)
ServiceUnavailable =

Raised when Twitter returns the HTTP status code 503

Class.new(ServerError)
GatewayTimeout =

Raised when Twitter returns the HTTP status code 504

Class.new(ServerError)
ERRORS =
{
  400 => Twitter::Error::BadRequest,
  401 => Twitter::Error::Unauthorized,
  403 => Twitter::Error::Forbidden,
  404 => Twitter::Error::NotFound,
  406 => Twitter::Error::NotAcceptable,
  413 => Twitter::Error::RequestEntityTooLarge,
  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 =
{
  'Status is a duplicate.' => Twitter::Error::DuplicateStatus,
  'You have already favorited this status.' => Twitter::Error::AlreadyFavorited,
  'You have already retweeted this tweet.' => Twitter::Error::AlreadyRetweeted,
  'sharing is not permissible for this status (Share validations failed)' => Twitter::Error::AlreadyRetweeted,
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Utils

flat_pmap, pmap

Constructor Details

#initialize(message = '', rate_limit = {}, code = nil) ⇒ Twitter::Error

Initializes a new Error object

Parameters:

  • message (Exception, String) (defaults to: '')
  • rate_limit (Hash) (defaults to: {})
  • code (Integer) (defaults to: nil)


153
154
155
156
157
# File 'lib/twitter/error.rb', line 153

def initialize(message = '', rate_limit = {}, code = nil)
  super(message)
  @rate_limit = Twitter::RateLimit.new(rate_limit)
  @code = code
end

Instance Attribute Details

#codeInteger (readonly)

Returns:

  • (Integer)


7
8
9
# File 'lib/twitter/error.rb', line 7

def code
  @code
end

#rate_limitTwitter::RateLimit (readonly)

Returns:



9
10
11
# File 'lib/twitter/error.rb', line 9

def rate_limit
  @rate_limit
end

Class Method Details

.from_response(body, headers) ⇒ Twitter::Error

Create a new error from an HTTP response

Parameters:

  • body (String)
  • headers (Hash)

Returns:



120
121
122
123
# File 'lib/twitter/error.rb', line 120

def from_response(body, headers)
  message, code = parse_error(body)
  new(message, headers, code)
end