class Omega::Contest
Public Instance Methods
add_user(user)
click to toggle source
# File lib/omega/contest.rb, line 30 def add_user(user) if user.is_a?(String) @client.add_user_to_contest(user, data[:alias]) else @client.add_user_to_contest(user.data[:username], data[:alias]) end end
all_sources()
click to toggle source
# File lib/omega/contest.rb, line 16 def all_sources sources = [] offset = 0 bach = runs until bach.empty? sources += bach offset += bach.size bach = runs(offset) end sources end
clarifications()
click to toggle source
# File lib/omega/contest.rb, line 38 def clarifications @client.clarifications(data[:alias]) end
observe(score_notifier, clar_noritifer)
click to toggle source
# File lib/omega/contest.rb, line 46 def observe(score_notifier, clar_noritifer) last = current = scoreboard sleep(5) Thread.new do loop do clarifications.select { |clar| clar[:answer].nil? || clar[:answer].empty? } .each { |clar| clar_noritifer.call(clar) } sleep(300) rescue StandardError => e puts e.message sleep(3000) end end loop do current = scoreboard last.users.each do |score| # puts score.username current_score = current.score_for(score.username) score.problems.each do |problem| name = problem[:alias] current_problem = current_score.score_for(name) last_points = problem[:points] current_points = current_problem[:points] if current_points != last_points score_notifier.call(data[:alias], score.username, name, current_points, last_points, data[:alias]) end end end # puts '-' * 60 last = current sleep(15) rescue StandardError => e puts e.message sleep(3000) end end
runs(offset = 0, page_size = 100)
click to toggle source
# File lib/omega/contest.rb, line 12 def runs(offset = 0, page_size = 100) @client.contest_runs(data[:alias], offset, page_size) end
scoreboard()
click to toggle source
# File lib/omega/contest.rb, line 8 def scoreboard @client.scoreboard(data[:alias]) end
users()
click to toggle source
# File lib/omega/contest.rb, line 42 def users scoreboard.users end