gitlab-org--gitlab-foss/lib/github/rate_limit.rb

46 lines
836 B
Ruby
Raw Normal View History

2017-04-11 21:33:54 -04:00
module Github
class RateLimit
SAFE_REMAINING_REQUESTS = 100.freeze
SAFE_RESET_TIME = 500.freeze
attr_reader :connection
def initialize(connection)
@connection = connection
end
def exceed?
return false unless enabled?
remaining <= SAFE_REMAINING_REQUESTS
end
def remaining
@remaining ||= body.dig('rate', 'remaining').to_i
2017-04-11 21:33:54 -04:00
end
def reset_in
@reset ||= body.dig('rate', 'reset').to_i
2017-04-11 21:33:54 -04:00
end
private
def rate_limit_url
'/rate_limit'
end
def response
connection.get(rate_limit_url)
end
def body
@body ||= Oj.load(response.body, class_cache: false, mode: :compat)
2017-04-11 21:33:54 -04:00
end
# GitHub Rate Limit API returns 404 when the rate limit is disabled
def enabled?
response.status != 404
end
end
end