Sha256: 38060b84115d1c2c4730dc30890aa3dd91be4fa8066a7109c18a007d4ceef848

Contents?: true

Size: 945 Bytes

Versions: 3

Compression:

Stored size: 945 Bytes

Contents

module AngellistApi
  # Custom error class for rescuing from all AngellistApi errors
  class Error < StandardError
    attr_reader :http_headers

    # Initializes new Error object
    #
    # @param [String] message
    # @param [Hash] http_headers
    # @return [AngellistApi::Error]
    def initialize(message, http_headers={})
      @http_headers = http_headers
      super message
    end

    # @return [Time]
    def ratelimit_reset
      reset = http_headers['x-ratelimit-reset']
      Time.at(reset.to_i) if reset
    end

    # @return [Integer]
    def ratelimit_limit
      limit = http_headers['x-ratelimit-limit']
      limit.to_i if limit
    end

    # @return [Integer]
    def ratelimit_remaining
      remaining = http_headers['x-ratelimit-remaining']
      remaining.to_i if remaining
    end

    # @return [Integer]
    def retry_after
      [(ratelimit_reset - Time.now).ceil, 0].max if ratelimit_reset
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
angellist_api-1.1.0 lib/angellist_api/error.rb
angellist_api-1.0.7 lib/angellist_api/error.rb
angellist_api-1.0.6 lib/angellist_api/error.rb