Files
CalcScheduler/routes/index.js

38 lines
871 B
JavaScript

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