class Kickme::CSVDownloader

Public Class Methods

download(options = {}) click to toggle source
# File lib/kickme/csv_downloader.rb, line 4
def self.download(options = {})
  countries = [options["countries"] || Kickme.country_names].flatten.compact.uniq
  countries.each do |country|
    web_page = Kickme.country_page(country)
    leagues = leagues_for_country(country, options["leagues"])
    leagues.each do |league|
      seasons = seasons_for_league(league, options["seasons"], web_page)
      seasons.each do |season|
        sd = SeasonDownloader.new(
          country: country,
          league: league,
          season: season,
          web_page: web_page
        )
        sd.download
      end
    end
  end
end

Private Class Methods

leagues_for_country(country, optional_leagues) click to toggle source
# File lib/kickme/csv_downloader.rb, line 43
def self.leagues_for_country(country, optional_leagues)
  kickme_leagues = Kickme.leagues_for(country)
  if optional_leagues
    optional_leagues = [optional_leagues].flatten.compact.uniq
    optional_leagues.select { |league| kickme_leagues.include?(league) }
  else
    kickme_leagues
  end
end
seasons_for_league(league, optional_seasons, web_page) click to toggle source
# File lib/kickme/csv_downloader.rb, line 26
def self.seasons_for_league(league, optional_seasons, web_page)
  league_csv_links = web_page.css("a:contains(\"#{league}\")")
  seasons = league_csv_links.map do |league_csv_link|
    season = league_csv_link.previous
    until season.text.include?("Season")
      season = season.previous
    end
    season.text.gsub("Season ", "")
  end
  if optional_seasons
    optional_seasons = [optional_seasons].flatten.compact.uniq
    optional_seasons.select { |season| seasons.include?(season) }
  else
    seasons
  end
end