UNPKG

deepify

Version:
87 lines (66 loc) 2.19 kB
/** * Created by AlexanderC on 3/11/16. */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileListener = undefined; var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _mime = require('mime'); var _mime2 = _interopRequireDefault(_mime); var _AbstractListener = require('./AbstractListener'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class FileListener extends _AbstractListener.AbstractListener { /** * @param {*} args */ constructor(...args) { super(...args); } /** * @param {ResponseEvent} event */ handler(event) { let request = event.request; let uri = this.getUri(request.url); let filename = this._resolveMicroservice(uri); _fs2.default.exists(filename, exists => { if (!exists) { if (this.server.fs.public.existsSync(uri)) { filename = _path2.default.join(this.server.fs.public._rootFolder, uri); this.server.logger(`{LFS} ${uri} resolved into ${filename}`); } else { this.server.logger(`File ${filename} not found`); event.send404(); return; } } _fs2.default.stat(filename, (error, stats) => { if (error) { this.server.logger(`Unable to stat file ${filename}: ${error}`); event.send500(error); return; } if (stats.isDirectory()) { this.server.logger(`Resolving ${filename} into ${filename}/index.html`); filename = _path2.default.join(filename, 'index.html'); } _fs2.default.readFile(filename, 'binary', (error, file) => { if (error) { this.server.logger(`Unable to read file ${filename}: ${error}`); event.send500(error); return; } let mimeType = _mime2.default.lookup(filename); this.server.logger(`Serving file ${filename} of type ${mimeType}`); event.send(file, 200, mimeType, true); }); }); }); } } exports.FileListener = FileListener;