From 438f3e5eafcd6e59faba5d87615d9918e241c5a2 Mon Sep 17 00:00:00 2001 From: IM23a-cernik Date: Thu, 17 Apr 2025 13:03:25 +0200 Subject: [PATCH 1/3] added ability to create a lobby --- lobby.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lobby.js b/lobby.js index 983db7d..b34f8b9 100644 --- a/lobby.js +++ b/lobby.js @@ -10,6 +10,8 @@ async function createLobby() { return lobbyId; } +as + app.get("/lobby/create", async (req, res) => { let lobbyId = await createLobby(); res.send("Lobby ID: " + lobbyId); From f55ceebc289a8a1871ca7f2856b941c8d5824832 Mon Sep 17 00:00:00 2001 From: IM23a-cernik Date: Thu, 17 Apr 2025 14:03:15 +0200 Subject: [PATCH 2/3] added lobby functionality --- lobby.js | 31 +++++++++++++++++++++++++++++-- swagger.js | 2 +- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lobby.js b/lobby.js index b34f8b9..54ac2d2 100644 --- a/lobby.js +++ b/lobby.js @@ -2,21 +2,48 @@ const express = require("express"); const app = express(); const port = 3000; +const playerMap = {}; + async function createLobby() { let response = await fetch("https://www.deckofcardsapi.com/api/deck/new/shuffle/?deck_count=1") let data = await response.json(); let lobbyId = data.deck_id + await fetch(`https://www.deckofcardsapi.com/api/deck/${lobbyId}/pile/players/add/?cards=`) console.log(lobbyId); return lobbyId; } -as +async function joinLobby(lobbyId, player_name) { + let response = await fetch(`https://www.deckofcardsapi.com/api/deck/${lobbyId}/pile/${player_name}/add/?cards=`) + console.log(response); +} app.get("/lobby/create", async (req, res) => { let lobbyId = await createLobby(); - res.send("Lobby ID: " + lobbyId); + res.send(lobbyId); }) +app.get("/lobby/join", async (req, res) => { + let lobbyId = req.query.lobbyId; + let name = req.query.name; + + await joinLobby(lobbyId, name); + + if (!playerMap[lobbyId]) { + playerMap[lobbyId] = []; + } + + playerMap[lobbyId].push(name); + + res.send(lobbyId + "" + name); +}); + +app.get("/lobby/players", async (req, res) => { + let lobbyId = req.query.lobbyId; + let players = playerMap[lobbyId] || []; + res.json({ players }); +}); + app.listen(port, () => { console.log("Server is running on port " + port); }); diff --git a/swagger.js b/swagger.js index 89d0c84..e0d4f16 100644 --- a/swagger.js +++ b/swagger.js @@ -17,7 +17,7 @@ const doc = { }; const outputFile = './swagger.json'; -const routes = ['./gambling.js']; +const routes = ['./gambling.js', './lobby.js']; /* NOTE: If you are using the express Router, you must pass in the 'routes' only the root file where the route starts, such as index.js, app.js, routes.js, etc ... */ From bb295bb95c860d0d533287dcf27fe7f5792c620e Mon Sep 17 00:00:00 2001 From: ScriptSorcerer20 Date: Thu, 17 Apr 2025 14:19:49 +0200 Subject: [PATCH 3/3] little change --- generate_secret.js | 5 ----- lobby.js | 29 ++++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 6 deletions(-) delete mode 100644 generate_secret.js diff --git a/generate_secret.js b/generate_secret.js deleted file mode 100644 index 2293b89..0000000 --- a/generate_secret.js +++ /dev/null @@ -1,5 +0,0 @@ -const crypto = require("crypto"); - -const secret = crypto.randomBytes(64).toString('hex') - -console.log(secret) \ No newline at end of file diff --git a/lobby.js b/lobby.js index 54ac2d2..a0464c6 100644 --- a/lobby.js +++ b/lobby.js @@ -1,4 +1,6 @@ const express = require("express"); +const path = require("path"); +const fs = require("fs"); const app = express(); const port = 3000; @@ -27,7 +29,13 @@ app.get("/lobby/join", async (req, res) => { let lobbyId = req.query.lobbyId; let name = req.query.name; - await joinLobby(lobbyId, name); + const users = get_data(); + const user = (users.find(u => u.username === name)) + if (!user) { + res.sendStatus(401).json({ error: "User doesnt exist are required" }); + } + + await joinLobby(lobbyId, user.username); if (!playerMap[lobbyId]) { playerMap[lobbyId] = []; @@ -44,6 +52,25 @@ app.get("/lobby/players", async (req, res) => { res.json({ players }); }); +function get_data() { + const dataPath = path.join(__dirname, "data.json"); + if (!fs.existsSync(dataPath)) { + fs.writeFileSync(dataPath, JSON.stringify([])); + } + const data = fs.readFileSync(dataPath); + return JSON.parse(data); +} + +function save_data(data) { + fs.writeFileSync(path.join(__dirname, "data.json"), JSON.stringify(data, null, 2)); +} + +function saveUser(user) { + const users = get_data(); + users.push(user); + save_data(users); +} + app.listen(port, () => { console.log("Server is running on port " + port); });