Core synchronous queue with an example worker

This commit is contained in:
2020-11-02 10:51:08 +00:00
parent d6b5b033f2
commit 0a30f2d466
16 changed files with 1103 additions and 1 deletions

37
routes/index.js Normal file
View File

@@ -0,0 +1,37 @@
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