UNPKG

deepify

Version:
125 lines (95 loc) 3.09 kB
/** * Created by CCristi on 6/28/16. */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.IndexListener = undefined; var _AbstractListener = require('./AbstractListener'); var _deepPackageManager = require('deep-package-manager'); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class IndexListener extends _AbstractListener.AbstractListener { constructor(...args) { super(...args); this._workingMicroservice = this.rootMicroservice; } /** * @param {ResponseEvent} event */ handler(event) { let request = event.request; let uri = this.getUri(request.url); if (['/', `/${IndexListener.INDEX_FILE}`].indexOf(uri) !== -1) { let htmlContent = _fs2.default.readFileSync(this._findSuitableIndexFile()).toString(); htmlContent = this._injectTags(htmlContent); event.stopPropagation().send(htmlContent, 200, 'text/html'); } } /** * @returns {String} * @private */ _findSuitableIndexFile() { let microservices = this.microservices; for (let identifier in microservices) { if (!microservices.hasOwnProperty(identifier)) { continue; } let microservice = microservices[identifier]; let indexFile = _path2.default.join(microservice.frontend, IndexListener.INDEX_FILE); if (_fs2.default.existsSync(indexFile)) { this._workingMicroservice = microservice; return indexFile; } } return _path2.default.join(this.rootMicroservice.frontend, IndexListener.INDEX_FILE); } /** * @param {String} content * @returns {String} * @private */ _injectTags(content) { let config = this.server.property.config; let globalConfig = config.globals; let drivers = []; drivers.push(new _deepPackageManager.Tags_Driver_RootAssetsDriver(config.microservices)); drivers.push(new _deepPackageManager.Tags_Driver_DeepEnvPlaceholderDriver(this._workingMicroservice)); if (globalConfig.pageLoader && globalConfig.pageLoader.src) { drivers.push(new _deepPackageManager.Tags_Driver_PageLoaderDriver(globalConfig.pageLoader, config.microservices)); } if (globalConfig.favicon) { drivers.push(new _deepPackageManager.Tags_Driver_FaviconDriver(globalConfig.favicon, config.microservices)); } if (globalConfig.version) { drivers.push(new _deepPackageManager.Tags_Driver_VersionDriver(globalConfig.version)); } return drivers.reduce((content, driver) => { return driver.inject(content); }, content); } /** * @returns {Object} */ get microservices() { return this.server.microservices; } /** * @returns {Object} */ get rootMicroservice() { return this.server.rootMicroservice; } /** * @returns {String} */ static get INDEX_FILE() { return 'index.html'; } } exports.IndexListener = IndexListener;