| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import restify from "restify";
- import loadDb from "./db.js";
- import corsMiddleware from "cors";
- import errors from "../../common/errors";
- const db = loadDb("ti.db");
- const server = restify.createServer({
- name: "spoll",
- version: "1.0.0"
- });
- server.use(restify.plugins.acceptParser(server.acceptable));
- server.use(restify.plugins.queryParser());
- server.use(restify.plugins.bodyParser());
- const cors = corsMiddleware({
- credentials: true,
- preflightMaxAge: 5,
- origin: function(origin, callback) {
- callback(null, origin);
- }
- });
- server.pre(cors);
- server.put("/register/:name", function(req, res, next) {
- const existingRecord = db.get(`/users/${req.params.name}`);
- if (existingRecord) {
- res.send({ error: errors.register.exists });
- } else {
- db.update(`/users/${req.params.name}`, {
- password: req.body.password,
- factions: []
- });
- const dbEntry = db.get(`/users/${req.params.name}`);
- res.send(dbEntry);
- return next();
- }
- });
- server.put("/vote/:name", function(req, res, next) {
- const user = db.get(`/users/${req.params.name}`);
- if (user && req.body.password === user.password) {
- db.set(`/votes/${req.params.name}`, { factions: req.body.factions });
- const dbEntry = db.get(`/votes/${req.params.name}`);
- res.send(dbEntry);
- } else {
- res.send({ error: errors.vote.baduser });
- }
- return next();
- });
- server.get("/vote/:name", function(req, res, next) {
- const dbEntry = db.get(`/votes/${req.params.name}`);
- if (dbEntry) {
- res.send(dbEntry);
- } else {
- res.send({ error: errors.vote.novotes });
- }
- return next();
- });
- server.post("/user/:name", function(req, res, next) {
- if (req.params.name) {
- const userEntry = db.get(`/users/${req.params.name}`);
- if (userEntry) {
- if (req.body && userEntry.password === req.body.password) {
- const voteEntry = db.get(`/votes/${req.params.name}`) || [];
- res.send({ factions: voteEntry });
- } else {
- res.send({ error: errors.user.badpassword });
- }
- } else {
- res.send({ error: errors.user.notfound });
- }
- } else {
- res.send({ error: errors.user.nouser });
- }
- return next();
- });
- server.get("/votes", function(req, res, next) {
- const revealDate = 1616803200 * 1000;
- if (Date.now() >= revealDate) {
- const dbEntry = db.get(`/votes`);
- if (dbEntry) {
- res.send(dbEntry);
- } else {
- res.send({ error: errors.votes.novotes });
- }
- } else {
- res.send({ error: errors.votes.toosoon });
- }
- return next();
- });
- server.listen(8082, function() {
- console.log("%s listening at %s", server.name, server.url);
- });
|