Core synchronous queue with an example worker
This commit is contained in:
37
routes/index.js
Normal file
37
routes/index.js
Normal 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
|
||||
Reference in New Issue
Block a user