doodul/source/doodul/app.d

49 lines
1.2 KiB
D

module doodul.app;
import core.time : Duration;
import vibe.vibe;
import doodul.lobby;
import doodul.game;
import doodul.wordlist;
void main()
{
auto router = new URLRouter;
router.get("/", &index);
router.get("/lobby/:id/joinability", &getLobbyJoinability);
router.get("/lobby/:id", &lobbyGet);
router.post("/lobby/:id", &lobbyPost);
router.get("/game/:id", &gameGet);
router.post("/game/:id", &gamePost);
router.get("/ws/lobby/:id", handleWebSockets(&wsLobby));
router.get("/ws/game/:id", handleWebSockets(&wsGame));
auto staticFileSettings = new HTTPFileServerSettings;
staticFileSettings.maxAge = Duration.zero;
router.get("/js/*", serveStaticFiles("./", staticFileSettings));
auto settings = new HTTPServerSettings;
settings.port = 8080;
settings.webSocketPingInterval = 10.seconds;
listenHTTP(settings, router);
runApplication();
}
void index(HTTPServerRequest request, HTTPServerResponse response)
{
auto nickname = request.cookies.get("nickname", defaultWordList.getRandomNickname());
auto lobbyId = request.query.get("lobbyId", defaultWordList.getRandomLobbyId());
response.render!("index.dt", nickname, lobbyId);
}
struct WebSocketMessage
{
string type;
Json data;
}