const express = require("express"); const bodyParser = require("body-parser"); const cors = require("cors"); const renderPage = require("./utils/renderPage"); const requireAuth = require("./middleware/requireAuth"); const MainPage = require("./components/MainPage"); function route(setup) { const app = express.Router(); setup(app); return app; } function createRouter() { const app = express.Router(); app.get("/", (req, res) => { res.send( renderPage(MainPage, { scripts: req.bundle.getScripts("main"), styles: req.bundle.getStyles("main") }) ); }); app.use(cors()); app.use(bodyParser.json()); app.use(require("./middleware/userToken")); app.get("/_publicKey", require("./actions/showPublicKey")); app.use( "/_auth", route(app => { app.post("/", require("./actions/createAuth")); app.get("/", require("./actions/showAuth")); }) ); app.use( "/_blacklist", route(app => { app.post( "/", requireAuth("blacklist.add"), require("./actions/addToBlacklist") ); app.get( "/", requireAuth("blacklist.read"), require("./actions/showBlacklist") ); app.delete( "*", requireAuth("blacklist.remove"), require("./middleware/validatePackageURL"), require("./actions/removeFromBlacklist") ); }) ); if (process.env.NODE_ENV !== "test") { app.get("/_stats", require("./actions/showStats")); } app.get( "*", require("./middleware/parseURL"), require("./middleware/checkBlacklist"), require("./middleware/fetchFile"), require("./actions/serveFile") ); return app; } module.exports = createRouter;