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