class MasterLeague::Fetcher

Attributes

last_response[R]

Public Instance Methods

fetch(path, params = {}) click to toggle source
# File lib/master_league/fetcher.rb, line 7
def fetch(path, params = {})
  if MasterLeague.caching_enabled?
    cache_key = [path, params].join('.')
    cached_response = MasterLeague.cache.read(cache_key)

    if cached_response
      cached_response
    else
      response = HTTP.get("#{base_url}/#{path}", params: params.merge(format: 'json'))
      handle_response(response, cache_key: cache_key)
    end
  else
    response = HTTP.get("#{base_url}/#{path}", params: params.merge(format: 'json'))
    handle_response(response)
  end
end

Private Instance Methods

base_url() click to toggle source
# File lib/master_league/fetcher.rb, line 40
def base_url
  'https://api.masterleague.net'
end
handle_response(response, cache_key: nil) click to toggle source
# File lib/master_league/fetcher.rb, line 26
def handle_response(response, cache_key: nil)
  @last_response = response

  if response.status.ok?
    if cache_key
      MasterLeague.cache.write(cache_key, response.parse)
    else
      response.parse
    end
  else
    raise "Something went wrong. #{response.status}: #{response}"
  end
end