{-# LANGUAGE OverloadedStrings, CPP #-} import Network.Wai import Network.HTTP.Types import Network.Wai.Handler.Warp (run) import Game.Hanabi(mkDS, DynamicStrategy) import Game.Hanabi.Client(clientApp) import Game.Hanabi.Backend(hanabiApp) import Game.Hanabi.Msg(defaultOptions, Options(..)) import Game.Hanabi.Strategies.SimpleStrategy hiding (main) main :: IO () main = do putStrLn "localhost:8080" -- Seemingly other port than 8080 does not work. let opt = defaultOptions{version="hanabi-dealer quickbuilt server", strategies=strs} capp <- clientApp opt bapp <- hanabiApp opt $ \_ resp -> resp $ responseLBS status400 [("Content-Type", "text/plain")] "400 Not a WebSocket request." run 8080 $ route capp bapp route :: Application -> Application -> Application route capp bapp request respond = case rawPathInfo request of "/ws/" -> bapp request respond _ -> capp request respond -- _ -> respond $ responseLBS status404 [("Content-Type", "text/plain")] "404 Not found" strs :: [(String, IO (DynamicStrategy IO))] strs = [ ("Stupid example strategy", return $ mkDS "Stupid example strategy" $ S) -- x , ("Sontakki", return $ mkDS "Sontakki" (Sontakki emptyDefault)) ]