28 lines
714 B
Ruby
28 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
|