@n1k1t/mock-server
Version:
Powerful util to setup mocks over HTTP APIs
64 lines • 2.6 kB
JavaScript
"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