107 lines
2.9 KiB
TypeScript
107 lines
2.9 KiB
TypeScript
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}`);
|
|
}); |