module Football::Butler::Tier
Constants
- COUNTER_RESET_SAFE_SECONDS
Attributes
available_minute[RW]
counter_reset[RW]
last_request[RW]
sleep_seconds[RW]
total_requests[RW]
Public Class Methods
available_minute?(response, key_remaining_minute)
click to toggle source
# File lib/football/butler/tier.rb, line 41 def available_minute?(response, key_remaining_minute) response&.headers&.dig(key_remaining_minute)&.present? end
count_request()
click to toggle source
# File lib/football/butler/tier.rb, line 67 def count_request @total_requests = @total_requests.is_a?(Integer) ? @total_requests + 1 : 1 end
counter_reset?(response, key_reset)
click to toggle source
# File lib/football/butler/tier.rb, line 45 def counter_reset?(response, key_reset) response&.headers&.dig(key_reset)&.present? end
get_sleep_seconds()
click to toggle source
# File lib/football/butler/tier.rb, line 49 def get_sleep_seconds seconds = @counter_reset.is_a?(Integer) ? @counter_reset : 60 result = COUNTER_RESET_SAFE_SECONDS + seconds @sleep_seconds = @sleep_seconds.is_a?(Integer) ? @sleep_seconds + result : result result end
limit_exceeded?()
click to toggle source
# File lib/football/butler/tier.rb, line 59 def limit_exceeded? @available_minute == 0 && @last_request >= 1.minute.ago end
reset_sleep_seconds()
click to toggle source
# File lib/football/butler/tier.rb, line 71 def reset_sleep_seconds @sleep_seconds = 0 end
reset_total_requests()
click to toggle source
# File lib/football/butler/tier.rb, line 63 def reset_total_requests @total_requests = 0 end
set_from_response_headers(response)
click to toggle source
# File lib/football/butler/tier.rb, line 11 def set_from_response_headers(response) case Configuration.api_name when :apifootball_com # n/a when :football_data_org if available_minute?(response, 'x-requests-available-minute') && counter_reset?(response, 'x-requestcounter-reset') set_tier_from_response( response.headers['x-requests-available-minute'], response.headers['x-requestcounter-reset'] ) end when :api_football_com if available_minute?(response, 'x-ratelimit-remaining') set_tier_from_response( response.headers['x-ratelimit-remaining'], '60' ) end end end
set_tier_from_response(available_minute, counter_reset)
click to toggle source
# File lib/football/butler/tier.rb, line 33 def set_tier_from_response(available_minute, counter_reset) @available_minute = available_minute.to_i @counter_reset = counter_reset.to_i @last_request = Time.current true end