class Omega::Client

Public Class Methods

new(conf) click to toggle source
# File lib/omega/client.rb, line 26
def initialize(conf)
  @config = conf
end

Public Instance Methods

add_user_to_contest(user, contest) click to toggle source
# File lib/omega/client.rb, line 89
def add_user_to_contest(user, contest)
  post('/api/contest/addUser', { contest_alias: contest, usernameOrEmail: user })
end
clarifications(name) click to toggle source
# File lib/omega/client.rb, line 75
def clarifications(name)
  data = post('/api/contest/clarifications/', { contest_alias: name })
  data[:clarifications]
end
contest(name) click to toggle source
# File lib/omega/client.rb, line 60
def contest(name)
  data = post('/api/contest/details/', { contest_alias: name })
  Contest.new(self, data)
rescue OmegaError => e
  raise unless e.data[:errorname] == 'userNotAllowed'

  open_contest(name)
  retry
end
contest_runs(contest, offset, page_size) click to toggle source
# File lib/omega/client.rb, line 101
def contest_runs(contest, offset, page_size)
  data = post('/api/contest/runs/', { contest_alias: contest, offset: offset, rowcount: page_size })
  data[:runs].map { |run| ContestRun.new(self, run) }
end
login() click to toggle source
# File lib/omega/client.rb, line 48
def login
  data = post('/api/user/login',
              usernameOrEmail: @config['user'],
              password: @config['pass'])
  @token = data[:auth_token]
  self.class.default_cookies.add_cookies('ouat' => data[:auth_token])
end
open_contest(name) click to toggle source
# File lib/omega/client.rb, line 56
def open_contest(name)
  post('/api/contest/open/', { contest_alias: name })
end
perform_request(method, endpoint, data, retried = false) click to toggle source
# File lib/omega/client.rb, line 30
def perform_request(method, endpoint, data, retried = false)
  url = "#{@config['endpoint']}#{endpoint}"
  response = self.class.send(method, url, body: data)
  body = JSON.parse(response.body, symbolize_names: true)

  if body[:errorcode] == 401 && !retried
    login
    return perform_request(method, endpoint, data, true)
  end
  raise OmegaError, body if body[:error]

  body
end
post(endpoint, data) click to toggle source
# File lib/omega/client.rb, line 44
def post(endpoint, data)
  perform_request(:post, endpoint, data)
end
problems_solved(user) click to toggle source
# File lib/omega/client.rb, line 93
def problems_solved(user)
  post('/api/user/problemsSolved/', { username: user })
end
respond_clarif(id, response) click to toggle source
# File lib/omega/client.rb, line 80
def respond_clarif(id, response)
  post('/api/clarification/update/', { clarification_id: id, answer: response })
end
run_details(run) click to toggle source
# File lib/omega/client.rb, line 97
def run_details(run)
  post('/api/run/details/', { run_alias: run })
end
scoreboard(name) click to toggle source
# File lib/omega/client.rb, line 70
def scoreboard(name)
  data = post('/api/contest/scoreboard/', { contest_alias: name })
  Scoreboard.new(self, data)
end
user(user) click to toggle source
# File lib/omega/client.rb, line 84
def user(user)
  data = post('/api/user/profile/', { username: user })
  User.new(self, data)
end