packages feed

hanabi-dealer-0.7.0.0: all.hs

{-# 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)
import Game.Hanabi.Strategies.Ryunosuke 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),
     ("Ryunosuke", return $ mkDS "Ryunosuke" Ry)
 -- x , ("Sontakki", return $ mkDS "Sontakki" (Sontakki emptyDefault))
  ]