You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

server.js 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. var DB = require("./js/db");
  2. var express = require("express");
  3. var fs = require("fs");
  4. var WebEvents = require("webevents");
  5. var db = DB("db.json");
  6. var conf = JSON.parse(fs.readFileSync("conf.json"));
  7. var events = WebEvents();
  8. var app = express();
  9. app.use(express.static("web"));
  10. app.listen(conf.port);
  11. app.post("/webevents/*", events.handle);
  12. app.get("/client.js", (req, res) => {
  13. fs.createReadStream("node_modules/webevents/client.js")
  14. .pipe(res)
  15. .on("error", err => res.end(err.toString()));
  16. });
  17. app.get("/list", (req, res) => {
  18. res.json(db.list);
  19. });
  20. app.get("/words", (req, res) => {
  21. res.json(db.words);
  22. });
  23. app.post("/remove/:index", (req, res) => {
  24. res.json({});
  25. if (!req.params.index)
  26. return;
  27. delete db.list[req.params.index];
  28. events.emit("remove", { index: req.params.index });
  29. // Clear the entire list array if there are no elements in it
  30. var containsElems = false;
  31. for (var i in db.list) {
  32. if (db.list[i] != null) {
  33. containsElems = true;
  34. break;
  35. }
  36. }
  37. if (!containsElems) {
  38. db.list = [];
  39. }
  40. db.flush();
  41. });
  42. app.post("/add/:name", (req, res) => {
  43. res.json({});
  44. if (!req.params.name)
  45. return;
  46. var name = req.params.name.toLowerCase().trim();
  47. db.list.push(name);
  48. events.emit("add", { name: name, index: db.list.length - 1 });
  49. var word = db.words.filter(w => w.name === name)[0];
  50. if (word)
  51. word.count += 1;
  52. else
  53. db.words.push({ name: name, count: 1 });
  54. db.flush();
  55. });
  56. console.log("Server listening on port "+conf.port);