import express from "express"; import { Server } from "socket.io"; import bodyParser from "body-parser"; import { fetchFood, fetchPizzy } from "./chefie"; import cors from 'cors'; import { getData, updateChoice } from "./service"; const app = express(); const server = require("http").createServer(app); const io = new Server(server, { cors: { origin: "*", }, }); // Body-parser middleware for parsing JSON app.use(bodyParser.json()); // app.use(express.json()); app.use(cors({ origin: '*' })); /** Vrátí data pro aktuální den. */ app.get("/api/data", (req, res) => { res.status(200).json(getData()); }); /** Vrátí obědové menu pro dostupné podniky. */ app.get("/api/food", (req, res) => { fetchFood().then(food => { res.status(200).json(food); }) }); /** Vrátí seznam dostupných pizz. */ app.get("/api/pizza", (req, res) => { fetchPizzy().then(pizzaList => { console.log("Výsledek", pizzaList); res.status(200).json(pizzaList); }); }); // /** Založí pizza day pro aktuální den, za předpokladu že dosud neexistuje. */ // app.post("/api/createPizzaDay", (req, res) => { // const data = createPizzaDay(); // res.status(200).json(data); // io.emit("message", data); // }); // /** Smaže pizza day pro aktuální den, za předpokladu že existuje. */ // app.post("/api/deletePizzaDay", (req, res) => { // deletePizzaDay(); // io.emit("message", getData()); // }); app.post("/api/updateChoice", (req, res) => { console.log("Změna výběru", req.body); if (!req.body.hasOwnProperty('name')) { res.status(400).json({}); } const data = updateChoice(req.body.name, req.body.choice); io.emit("message", data); res.status(200).json(data); }); // TODO smazat app.post("/api/zprava", (req, res) => { const { username, message } = req.body; if ( typeof username !== "string" || typeof message !== "string" || username.length > 500 || message.length > 500 ) { return res.status(400).json({ error: "Invalid input" }); } console.log(`posílám ${username} ${message} `); io.emit("externalMessage", `${username} -> ${message}`); res.status(200).json({ success: "Message sent" }); }); io.on("connection", (socket) => { console.log(`New client connected: ${socket.id}`); socket.on("message", (message) => { io.emit("message", message); }); // TODO smazat socket.on("jduKafe", ({ username, timeString }) => { console.log(`Received message: ${username}`); socket.broadcast.emit("jduKafe", `${timeString}: ${username} -> jdu Kafe`); }); socket.on("disconnect", () => { console.log(`Client disconnected: ${socket.id}`); }); }); const PORT = process.env.PORT || 3001; const HOST = process.env.HOST || '0.0.0.0'; server.listen(PORT, () => { console.log(`Server listening on ${HOST}, port ${PORT}`); });