"use strict"; const expressPromiseRouter = require("express-promise-router"); module.exports = function(state) { const requireAccessToken = require("../../middlewares/require-access-token")(state); const authenticationRouter = require("./authentication")(state); const accountRouter = require("./account")(state); let router = expressPromiseRouter(); router.get("/versions", (req, res) => { /* FIXME: Support more specification versions? */ res.json({ versions: [ "r0.4.0" ] }); }); /* Various routes in the authentication router are freely accessible, so access token requirements are implemented there on a per-route basis. */ router.use(authenticationRouter); /* From this point onwards, every route requires an access token. */ router.use(requireAccessToken); router.use(accountRouter); return router; }