lib/evrythng/error.rb in evrythng-0.0.5 vs lib/evrythng/error.rb in evrythng-0.1.0

- old
+ new

@@ -1,59 +1,36 @@ module Evrythng # Custom error class for rescuing from all Evrythng errors class Error < StandardError attr_reader :http_headers + # Initializes a new Error object + # + # @param message [String] + # @param http_headers [Hash] + # @return [Evrythng::Error] def initialize(message, http_headers) @http_headers = Hash[http_headers] - super message + super(message) end + # @return [Time] def ratelimit_reset Time.at(@http_headers.values_at('x-ratelimit-reset', 'X-RateLimit-Reset').detect{|value| value}.to_i) end + # @return [Integer] def ratelimit_limit @http_headers.values_at('x-ratelimit-limit', 'X-RateLimit-Limit').detect{|value| value}.to_i end + # @return [Integer] def ratelimit_remaining @http_headers.values_at('x-ratelimit-remaining', 'X-RateLimit-Remaining').detect{|value| value}.to_i end + # @return [Integer] def retry_after [(ratelimit_reset - Time.now).ceil, 0].max end end - - # Raised when Evrythng returns the HTTP status code 400 - class BadRequest < Error; end - - # Raised when Evrythng returns the HTTP status code 401 - class Unauthorized < Error; end - - # Raised when Evrythng returns the HTTP status code 403 - class Forbidden < Error; end - - # Raised when Evrythng returns the HTTP status code 404 - class NotFound < Error; end - - # Raised when Evrythng returns the HTTP status code 406 - class NotAcceptable < Error; end - - # Raised when Evrythng returns the HTTP status code 420 - class EnhanceYourCalm < Error - # The number of seconds your application should wait before requesting date from the Search API again - def retry_after - @http_headers.values_at('retry-after', 'Retry-After').detect {|value| value }.to_i - end - end - - # Raised when Evrythng returns the HTTP status code 500 - class InternalServerError < Error; end - - # Raised when Evrythng returns the HTTP status code 502 - class BadGateway < Error; end - - # Raised when Evrythng returns the HTTP status code 503 - class ServiceUnavailable < Error; end end