class F1Results::Agent
Public Instance Methods
get_results(new_event)
click to toggle source
# File lib/f1results/agent.rb, line 11 def get_results(new_event) @event = new_event event.url ||= url update_results return event end
get_results_with_url(new_url)
click to toggle source
# File lib/f1results/agent.rb, line 18 def get_results_with_url(new_url) event.url = new_url update_results return event end
get_url(event)
click to toggle source
# File lib/f1results/agent.rb, line 6 def get_url(event) @event = event return url end
Private Instance Methods
event()
click to toggle source
# File lib/f1results/agent.rb, line 26 def event @event ||= Event.new end
html_file_name()
click to toggle source
# File lib/f1results/agent.rb, line 69 def html_file_name result_types = {} page.parser.xpath('//a[@data-name="resultType"]').each do |node| key = node.text.parameterize('_').to_sym value = node.attr('data-value') result_types[key] = value end # TODO: add support for Starting Grid, Warm Up, Pit Stop Summary, Fastest Laps file_name = case when event.race? 'race-result' when event.qualifying? result_types[:qualifying] || result_types[:overall_qualifying] when event.practice? event.type_name.parameterize else raise "No results for event type '#{event.type}' at #{event.year} #{event.country}" end return file_name + '.html' end
meeting_key()
click to toggle source
# File lib/f1results/agent.rb, line 59 def meeting_key country = event.country.parameterize options = page.parser.xpath('//select[@name="meetingKey"]/option') meeting_key_node = options.detect do |node| node.attr('value') =~ /^\d+\/#{country}/ || node.text.parameterize =~ /#{country}/ end raise "No country '#{event.country}' found for #{event.year}" if meeting_key_node.nil? return meeting_key_node.attr('value') end
update_results()
click to toggle source
# File lib/f1results/agent.rb, line 46 def update_results begin get(event.url) new_event = Parser.new(page).parse event.results = new_event.results event.type ||= new_event.type event.country ||= new_event.country event.name ||= new_event.name rescue Mechanize::ResponseCodeError, Net::HTTPNotFound raise "No results found at #{url}" end end
url()
click to toggle source
# File lib/f1results/agent.rb, line 30 def url base_path = "content/fom-website/en/results.html/#{event.year}/" year_url = URI.join F1Results::BASEURL, base_path, 'races.html' begin get(year_url) rescue Mechanize::ResponseCodeError, Net::HTTPNotFound raise "No results found for #{event.year}" end file_name = html_file_name key = meeting_key uri = URI.join F1Results::BASEURL, base_path, "races/#{key}/#{file_name}" return uri.to_s end