UNPKG

@n1k1t/mock-server

Version:

Powerful util to setup mocks over HTTP APIs

64 lines 2.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const mime_types_1 = __importDefault(require("mime-types")); const path_1 = __importDefault(require("path")); const promises_1 = __importDefault(require("fs/promises")); const models_1 = require("../models"); const config_1 = __importDefault(require("../../config")); exports.default = models_1.Endpoint .build() .bindToHttp({ method: 'GET', path: '/gui' }) .assignHandler(async (context) => { if (context.transport !== 'http') { return context.reply.notFound(); } const routes = config_1.default.get('routes'); const statics = config_1.default.get('statics'); if (!context.incoming.path.includes(routes.internal.gui)) { return context.assign({ outgoing: { type: 'plain', status: 404, headers: {} } }); } const root = routes.internal.root + routes.internal.gui; const parsed = path_1.default.parse(context.incoming.path.replace(root, '')); if (!parsed.dir) { return context.assign({ outgoing: { type: 'plain', status: 301, headers: { Location: `..${root}/`, }, }, }); } if (parsed.dir === '/' && !parsed.ext) { const outgoing = { type: 'plain', status: 200, headers: { 'Content-Type': 'text/html;charset=utf-8', }, }; context.response.writeHead(outgoing.status, outgoing.headers); (0, fs_1.createReadStream)(path_1.default.join(statics.public.dir, '/index.html')).pipe(context.response); return context.assign({ outgoing }).complete(); } const stats = await promises_1.default.stat(path_1.default.join(statics.public.dir, parsed.dir, parsed.base)).catch(() => null); if (!stats) { return context.assign({ outgoing: { type: 'plain', status: 404, headers: {} } }); } const outgoing = { type: 'plain', status: 200, headers: { 'Content-Type': mime_types_1.default.contentType(parsed.ext) || '', }, }; context.response.writeHead(outgoing.status, outgoing.headers); (0, fs_1.createReadStream)(path_1.default.join(statics.public.dir, parsed.dir, parsed.base)).pipe(context.response); return context.assign({ outgoing }).complete(); }); //# sourceMappingURL=gui.endpoint.js.map