class Gameworks::Server
Attributes
game_registry[R]
Public Class Methods
new()
click to toggle source
# File lib/gameworks/server.rb, line 14 def initialize @game_registry = Gameworks::GameRegistry.new end
Public Instance Methods
call(env)
click to toggle source
# File lib/gameworks/server.rb, line 22 def call(env) tokens = {} env.each do |key,value| case key when "HTTP_X_TURN_TOKEN" tokens[:turn] = value when "HTTP_X_OBSERVER_TOKEN" tokens[:observer] = value end end body = env["rack.input"].read unless body.empty? payload = JSON.parse("[#{body}]").first end process_request( :method => env["REQUEST_METHOD"], :path => env["REQUEST_PATH"], :payload => payload, :tokens => tokens, :async_cb => env['async.callback']) end
game_class()
click to toggle source
# File lib/gameworks/server.rb, line 18 def game_class raise NotImplementedError end
process_request(request={})
click to toggle source
# File lib/gameworks/server.rb, line 44 def process_request(request={}) handler = case request[:path] when %r{^/$} then Gameworks::Servlet::GameList when %r{^/match$} then Gameworks::Servlet::MatchMaker when %r{^/[^/]+/?$} then Gameworks::Servlet::GameView when %r{^/[^/]+/players$} then Gameworks::Servlet::AddPlayer when %r{^/[^/]+/moves$} then Gameworks::Servlet::AddMove when %r{^/[^/]+/observers$} then Gameworks::Servlet::AddObserver end if handler begin handler.process(self, request) rescue Exception => e puts e.inspect puts e.backtrace [ 500, {}, [] ] end else [ 404, {}, [] ] end end