mirror of
https://github.com/danbee/scoreboard
synced 2025-03-04 08:59:11 +00:00
56 lines
980 B
Ruby
56 lines
980 B
Ruby
#!/usr/bin/env ruby
|
|
|
|
require 'dotenv'
|
|
Dotenv.load
|
|
|
|
require 'json'
|
|
|
|
require 'sinatra'
|
|
require 'pusher'
|
|
|
|
require 'redis'
|
|
require 'redis-objects'
|
|
|
|
require 'connection_pool'
|
|
redis_url = ENV['REDISCLOUD_URL']
|
|
Redis::Objects.redis = ConnectionPool.new(size: 5, timeout: 5) { Redis.new(url: redis_url) }
|
|
|
|
require './lib/match'
|
|
require './lib/player'
|
|
|
|
Pusher.url = "http://#{ENV['PUSHER_KEY']}:#{ENV['PUSHER_SECRET']}@api.pusherapp.com/apps/#{ENV['PUSHER_APP']}"
|
|
|
|
class Scoreboard < Sinatra::Base
|
|
|
|
@@match = Match.new
|
|
|
|
get '/' do
|
|
erb :index, locals: { scores: @@match.scores }
|
|
end
|
|
|
|
put '/reset_scores' do
|
|
@@match.reset_scores
|
|
@@match.reset_games
|
|
push_scores
|
|
end
|
|
|
|
put '/red_scores' do
|
|
@@match.add_point(:red)
|
|
push_scores
|
|
end
|
|
|
|
put '/blue_scores' do
|
|
@@match.add_point(:blue)
|
|
push_scores
|
|
end
|
|
|
|
get '/scores' do
|
|
JSON @@match.scores
|
|
end
|
|
|
|
def push_scores
|
|
Pusher['scores'].trigger('update_scores', @@match.scores.to_json)
|
|
end
|
|
|
|
end
|