class ErgastF1::Race

Constants

STATUS_TABLE

Public Class Methods

new(year: nil, circuit: nil, round: nil) click to toggle source
# File lib/ergast_f1/race.rb, line 26
def initialize(year: nil, circuit: nil, round: nil)
  @year = year || Time.now.year
  @circuit = circuit
  @round = round
end

Public Instance Methods

constructor_result(constructor_name) click to toggle source
# File lib/ergast_f1/race.rb, line 36
def constructor_result(constructor_name)
  race_data(race_path + "/constructors/#{constructor_name}/results")
end
driver_result(driver_name) click to toggle source
# File lib/ergast_f1/race.rb, line 40
def driver_result(driver_name)
  race_data(race_path + "/drivers/#{driver_name}/results")
end
finishing_status(status) click to toggle source
# File lib/ergast_f1/race.rb, line 48
def finishing_status(status)
  finishing_status = resolve_finishing_status(status)
  race_data(race_path + "/status/#{finishing_status}/results")
end
grid_position(position) click to toggle source
# File lib/ergast_f1/race.rb, line 44
def grid_position(position)
  race_data(race_path + "/grid/#{position}/results")
end
laptime_ranking(position=nil) click to toggle source
# File lib/ergast_f1/race.rb, line 53
def laptime_ranking(position=nil)
  raise BadQuery, "Fastest lap data isn't available for races before 2004" if @year < 2004
  race_data(race_path + "/fastest/#{position}/results")
end
result() click to toggle source
# File lib/ergast_f1/race.rb, line 32
def result
  race_data(race_path + "/results")
end

Private Instance Methods

race_data(endpoint) click to toggle source
# File lib/ergast_f1/race.rb, line 74
def race_data(endpoint)
  parsed_response = ErgastClient.new(endpoint).api_get_request
  race_results = parsed_response.dig("MRData", "RaceTable", "Races")
  return [] if race_results.empty?
  race_results.first["Results"]
end
race_path() click to toggle source
# File lib/ergast_f1/race.rb, line 60
def race_path
  if @round
    "#{@year}/#{@round}"
  elsif @circuit
    "#{@year}/circuits/#{@circuit}"
  else
    "#{@year}/last"
  end
end
resolve_finishing_status(status) click to toggle source
# File lib/ergast_f1/race.rb, line 70
def resolve_finishing_status(status)
  STATUS_TABLE[status] || (raise BadQuery, "Invalid status supplied. Valid status arguments are: Finished, Disqualified, Accident, Collision, Engine, Gearbox, Transmission, Clutch, Hydraulics, Electrical, Spun, Radiator, Suspension, Brakes, Differential, Overheating, Mechanical, Tyre, Driver, Puncture, Driveshaft.")
end