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