const dotenv = require('dotenv') const express = require('express') const statusCodes = require('http-status-codes').StatusCodes const createError = require('http-errors') dotenv.config() const router = express.Router() // TODO: Add a mechanism for multiple clients/API keys const apiKeys = [ process.env.API_KEY ] // Middleware to verify API access is granted router.use('/', function(req, res, next){ var key = req.query['api_key']; // key isn't present if (!key) { return next(createError(statusCodes.BAD_REQUEST, 'api key required')) } // key is invalid if (!~apiKeys.indexOf(key)) { return next(createError(statusCodes.UNAUTHORIZED, 'invalid api key')) } // all good, store req.key for route access req.key = key next() }) // Add API routes to default router router.use('/', require('./calc-queue.js')) module.exports = router