nodejs-rigorous
Version:
Rigorous Framework
67 lines (52 loc) • 2.25 kB
JavaScript
;
/**
* 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
var 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 = function (PATH_ROUTES, apiVersion, app) {
return new Promise(function (resolve, reject) {
fs.readdirSync(PATH_ROUTES).forEach(function (directory) {
if (isModelDirectory(directory)) {
fs.readdirSync("".concat(PATH_ROUTES, "/").concat(directory)).forEach(function (file) {
if (isRouteFile(file)) {
var name = getRoutelFileName(file);
try {
if (isValidRouteFile(name)) {
// './post_me.update.byid.title'
var indexDelimiter = name.indexOf('_'); // post_me.update....
var typeRequest = name.substr(0, indexDelimiter); // 'post'
var partialRouteName = name.substr(indexDelimiter + 1, name.length).split('.').join('/'); // me.update... -> ['me', 'update', 'byid', 'swit_id'] -> me/update/byid/title
var routeName = "/api/v".concat(apiVersion, "/").concat(directory, "/").concat(partialRouteName); // /switlist/me/update/byid/title
var Route = require("".concat(PATH_ROUTES, "/").concat(directory, "/").concat(name));
console.log('Route ', routeName);
new Route().routeIt(app, typeRequest, routeName);
}
} catch (err) {
console.log("Model ".concat(name, " failed to load:'"), err);
return reject(err);
}
}
return null;
});
}
});
return resolve();
});
};