class Football::Butler::Api

Constants

RETRIES

Public Class Methods

get(path:, filters: {}, result: :default) click to toggle source
# File lib/football/butler/api.rb, line 10
def get(path:, filters: {}, result: :default)
  Configuration.wait_on_limit ?
    get_with_wait(path: path, filters: filters, result: result) :
    get_default(path: path, filters: filters, result: result)
end

Private Class Methods

get_default(path:, filters: {}, result: :default) click to toggle source
# File lib/football/butler/api.rb, line 18
def get_default(path:, filters: {}, result: :default)
  return invalid_config_result if invalid_config?
  response = process_http_party(path, filters)
  process_response(response, result)
end
get_with_wait(path:, filters: {}, result: :default) click to toggle source
# File lib/football/butler/api.rb, line 24
def get_with_wait(path:, filters: {}, result: :default)
  return invalid_config_result if invalid_config?

  if Tier.limit_exceeded?
    log("Tier.limit_exceeded, sleeping for #{Tier.get_sleep_seconds} seconds now ...")
    sleep(Tier.get_sleep_seconds) unless Rails.env.test?
  end

  response = process_http_party(path, filters)
  Configuration.tier_from_response(response)

  if reached_limit?(response)
    response = process_retry(path, filters)
  end

  process_response(response, result)
end
http_party_get(url, headers, query) click to toggle source
# File lib/football/butler/api.rb, line 75
def http_party_get(url, headers, query)
  Tier.count_request

  HTTParty.get "#{url}",
               headers: headers,
               query: query,
               format: :json
end
invalid_config?() click to toggle source
# File lib/football/butler/api.rb, line 84
def invalid_config?
  Configuration.api_token.blank? || !Configuration.api_name_valid?(Configuration.api_name)
end
log(text) click to toggle source
# File lib/football/butler/api.rb, line 88
def log(text)
  log_text = "Football::Butler::VERSION: #{Football::Butler::VERSION} - #{text}"

  puts "\n\n#{log_text}\n\n"
  Football::Butler.logger.debug(log_text)
end
process_http_party(path, filters) click to toggle source
# File lib/football/butler/api.rb, line 60
def process_http_party(path, filters)
  headers = Configuration.http_party_headers
  url     = Configuration.http_party_url(path)
  query   = filters || {}
  http_party_get(url, headers, query)
end
process_response(response, result) click to toggle source
# File lib/football/butler/api.rb, line 67
def process_response(response, result)
  if response.parsed_response.is_a?(Hash) && response.dig('message')
    error_message(response['message'])
  else
    Configuration.http_party_response(response, result)
  end
end
process_retry(path, filters) click to toggle source
# File lib/football/butler/api.rb, line 42
def process_retry(path, filters)
  response  = nil
  retries   = 0

  while retries <= RETRIES
    retries +=1

    log("Tier.limit_exceeded again (retry #{retries}), sleeping for #{Tier.get_sleep_seconds} seconds now ...")
    sleep(Tier.get_sleep_seconds) unless Rails.env.test?

    response = process_http_party(path, filters)
    Configuration.tier_from_response(response)

    break unless reached_limit?(response)
  end
  response
end