UNPKG

node-rigorous

Version:
75 lines (55 loc) 2.75 kB
/** * Autoriser le require dynamique * Impact -> https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-dynamic-require.md */ /* eslint global-require: 0 */ // --> OFF /* eslint import/no-dynamic-require: 0 */ // --> OFF const fs = require('fs'); function isModelDirectory(directory) { return (directory.indexOf('.') === -1 && directory.indexOf('__') === -1); } function isRouteFile(file) { return (file.indexOf('.js') > -1 && file.indexOf('__') === -1); } function isValidRouteFile(name) { return (name !== '' && ( name.indexOf('post_') > -1 || name.indexOf('get_') > -1 || name.indexOf('update_') > -1 || name.indexOf('put_') > -1 )); } function getRoutelFileName(file) { return file.substr(0, file.length - 3); // 3 = .js } module.exports = { init: (app, apiVersion, PATH_ROUTES) => { return new Promise((resolve, reject) => { fs.readdirSync(PATH_ROUTES).forEach((directory) => { if (isModelDirectory(directory)) { fs.readdirSync(`${PATH_ROUTES}/${directory}`).forEach((file) => { if (isRouteFile(file)) { const name = getRoutelFileName(file); try { if (isValidRouteFile(name)) { // './post_me.update.byid.title' const indexDelimiter = name.indexOf('_'); // post_me.update.... const typeRequest = name.substr(0, indexDelimiter); // 'post' const partialRouteName = name.substr(indexDelimiter + 1, name.length).split('.').join('/'); // me.update... -> ['me', 'update', 'byid', 'title'] -> me/update/byid/title const routeName = `/api/v${apiVersion}/${directory}/${partialRouteName}`; // /switlist/me/update/byid/title const Route = require(`${PATH_ROUTES}/${directory}/${name}`); console.log('Route ', routeName); new Route().routeIt(app, typeRequest, routeName); } } catch (err) { console.log(`Model ${name} failed to load:'`, err); return reject(err); } } return null; }); } }); return resolve(); }); }, };