38 lines
871 B
JavaScript
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
|