Skip to content

Commit

Permalink
Merge branch 'release/v1.7.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
patrinhani-ciandt committed Nov 18, 2017
2 parents 220af59 + 33adb0c commit 9d9add9
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 11 deletions.
37 changes: 29 additions & 8 deletions lib/loaders/webserver-route-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,52 @@ const fsUtils = require('../utils/fs');

module.exports = function (webserver, baseDir = __dirname, routePath = null) {
const logger = require('../logging')('abbott-framework:webserver-route-loader');
let server = webserver.server;

var parentRoute = webserver;
var parentRoute = server;

if (routePath) {
parentRoute = express.Router();
webserver.use(routePath, parentRoute);
server.use(routePath, parentRoute);
}

var routeDirectories = fsUtils.getDirectories(baseDir);
let moduleLoaded = null;
try {
moduleLoaded = require(baseDir);
} catch(err) {}

if (moduleLoaded) {
loadSubRoute(moduleLoaded, parentRoute, routePath);
}

let routeDirectories = null;
try {
let baseDirStats = fs.lstatSync(baseDir);
if (baseDirStats.isDirectory()) {
routeDirectories = fsUtils.getDirectories(baseDir);
}
} catch (err) {}

routeDirectories.forEach((routeApiItem) => {
logger.info(`directories: (${baseDir} / ${routeApiItem})`);
if (routeDirectories) {
routeDirectories.forEach((routeApiItem) => {
logger.info(`directories: (${baseDir} / ${routeApiItem})`);

loadSubRoute(require(path.join(baseDir, routeApiItem)), parentRoute, routePath, routeApiItem);
});
}

var apiSubRoute = require(path.join(baseDir, routeApiItem));
function loadSubRoute(apiSubRoute, parentRoute, routePath, routeApiItem) {
if (apiSubRoute) {
let subPath = routePath || '/';
let apiRoutePath = path.join(subPath, routeApiItem);
let apiRoutePath = path.join(subPath, routeApiItem || '');
let router = express.Router();

apiSubRoute(webserver, router);

parentRoute.use(apiRoutePath, router);
logger.info(`subroute loaded (${apiRoutePath})!`);
}
});
}

return parentRoute;
};
31 changes: 30 additions & 1 deletion lib/webserver/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,41 @@ module.exports = class {

constructor(options) {
this.options = options || {};
this.options.baseRoutes = this.options.baseRoutes || [];

this.server = express();
this.server.use(bodyParser.json());
this.server.use(bodyParser.urlencoded({ extended: true }));

this.serverRoutes = webserverRouteLoader(this.server, path.join(__dirname, 'routes'));
this.serverRoutes = {};

this.loadInitialRoutes();
}

loadInitialRoutes() {
this.loadRoute(path.join(__dirname, 'routes'));

if (this.options.baseRoutes.length > 0) {
this.options.baseRoutes.forEach((item) => {
this.loadRoute(item);
});
}
}

loadRoute(routeOpts) {
let baseRouteDir = null;
let baseRoutePath = null;

if (typeof routeOpts === 'string' || routeOpts instanceof String) {
baseRouteDir = routeOpts;
} else {
baseRouteDir = routeOpts.baseDir || null;
baseRoutePath = routeOpts.routePath || null;
}

if (!this.serverRoutes[baseRouteDir]) {
this.serverRoutes[baseRouteDir] = webserverRouteLoader(this, baseRouteDir, baseRoutePath);
}
}

start() {
Expand Down
3 changes: 2 additions & 1 deletion lib/webserver/routes/bot/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ const path = require('path');

module.exports = function (webserver, router) {
const logger = require('../../../logging')('abbott-framework:webserver(/bot)');
logger.debug('route loaded!');

var mimeImage = {
gif: 'image/gif',
Expand All @@ -30,4 +29,6 @@ module.exports = function (webserver, router) {
res.status(404).end('Not found');
});
});

logger.debug('route loaded!');
};
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@abbott-platform/abbott-framework",
"version": "1.7.0",
"version": "1.7.1",
"description": "Abbott Framework is a framework to bring productivity and abstractions to help you to build awesome chatbots.",
"main": "index.js",
"engines": {
Expand Down

0 comments on commit 9d9add9

Please sign in to comment.