const express = require("express"); const cors = require("cors"); const mongoose = require("mongoose"); const mongoDB = "mongodb://127.0.0.1/chillroom-database"; const dbSchema = require("./dbScheme"); mongoose.connect( mongoDB, { useNewUrlParser: true } ); const app = express(); app.use(cors()); app.options("*", cors()); const port = 3000; const save_data = async ip => { try { const value_data = await getScript(ip); const data = JSON.parse(value_data); const item = new dbSchema({ ip, name: data.Sensors[0].TaskName, status: data.Sensors[0].Switch }); await item.save(); } catch (error) { console.log("ERROR z CATCHA => " + error); const item = new dbSchema({ ip, status: "Urządzenie przestało działać - prawdopodobnie brak zasilania" }); item .save() .then() .catch(); } }; let interval = setInterval(() => { save_data("192.168.8.107"); }, 5000); const getScript = url => { return new Promise((resolve, reject) => { const http = require("http"); let client = http; url = "http://" + url + "/json"; console.log("DATA URL => " + url); client .get(url, resp => { let data = ""; // Dane zostały pobrane resp.on("data", chunk => { data += chunk; }); // Cały response pobrany i print resp.on("end", () => { resolve(data); console.log(data); }); }) .on("error", err => { reject(err); }); }); }; app.get("/chillroom-server", (req, res) => { (async url => { res.json(await getScript(url)); })(req.query.ip); }); app.get("/stop", (req, res) => { clearInterval(interval); interval = null; res.json({ message: "Przestalem dzialac :<" }); }); app.get("/start", (req, res) => { if (interval === null) { interval = setInterval(() => { save_data("192.168.8.107"); }, 5000); res.json({ message: "Zaczalem dzialac :>" }); } else { res.json({ message: "Dzialam i nie mozna mnie rozpoczac raz jeszcze :p" }); } }); app.get("/all", async (req, res) => { const items = await dbSchema.find({}); res.json(items); }); app.listen(port, () => console.log(`Chillroom server nasluchuje na porcie ${port}!`) );