27 lines
714 B
Ruby
27 lines
714 B
Ruby
module Github
|
|
class RateLimit
|
|
SAFE_REMAINING_REQUESTS = 100
|
|
SAFE_RESET_TIME = 500
|
|
RATE_LIMIT_URL = '/rate_limit'.freeze
|
|
|
|
attr_reader :connection
|
|
|
|
def initialize(connection)
|
|
@connection = connection
|
|
end
|
|
|
|
def get
|
|
response = connection.get(RATE_LIMIT_URL)
|
|
|
|
# GitHub Rate Limit API returns 404 when the rate limit is disabled
|
|
return false unless response.status != 404
|
|
|
|
body = Oj.load(response.body, class_cache: false, mode: :compat)
|
|
remaining = body.dig('rate', 'remaining').to_i
|
|
reset_in = body.dig('rate', 'reset').to_i
|
|
exceed = remaining <= SAFE_REMAINING_REQUESTS
|
|
|
|
[exceed, reset_in]
|
|
end
|
|
end
|
|
end
|