This repository has been archived on 2020-08-13. You can view files and clone it, but cannot push or open issues or pull requests.
requestor/index.js

51 lines
1.3 KiB
JavaScript

const fs = require('fs');
const path = require('path');
/**
* Load all request handlers in the given folder
*
* @param {any} app express app
* @param {string} modulefolder folder that contains all modules
* @param {{opts: any, subdir: string, verbose: boolean}} options
*/
module.exports = function (app, modulefolder, options) {
let { opts, subdir, verbose } = options;
if (typeof subdir === 'undefined') subdir = '';
if (typeof verbose === 'undefined') verbose = false;
for (const f of fs.readdirSync(modulefolder)) {
const regex = /(.*?)-(.*?)\.js/;
let [, method, url] = regex.exec(f);
url = '/' + subdir + '/' + url + '/';
url = url
.replace(/^\/[^/]*\/root/i, '/')
.replace(/\./g, '/')
.replace(/\/+/g, '/');
const handler = require(path.join(process.cwd(), modulefolder, f));
const func = (req, res, next) => {
handler(req, res, next, opts);
};
if (verbose) console.log(`[requestor info] redirecting ${url} to ${f}`);
switch (method) {
case 'post':
app.post(url, func);
break;
case 'get':
app.get(url, func);
break;
case 'put':
app.put(url, func);
break;
case 'delete':
app.delete(url, func);
break;
case 'all':
app.all(url, func);
break;
}
}
};