UNPKG

@63pokupki/nodejs-common

Version:
55 lines 2.27 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const colors_1 = __importDefault(require("colors")); /* LEGO ошибок */ function ParseBodyMiddleware(ctx) { if (ctx.req.method === 'POST') { const body = []; ctx.req.on('error', (err) => { console.error(colors_1.default.red('Ошибка парсинга тела запроса - '), ctx.req.url, err); ctx.error(400); }); ctx.req.on('data', (chunk) => { body.push(chunk); }); ctx.req.on('end', () => { let sBody = Buffer.concat(body).toString(); try { if (sBody && sBody[0] === '{') { ctx.body = JSON.parse(sBody); if (ctx.body.data) { // Если встречаем [data] парсим ее как json ctx.body.data = JSON.parse(String(ctx.body.data)); } } else { sBody = decodeURI(encodeURI(sBody)); const vSearchParams = new URLSearchParams(sBody); // Итерируем параметры form параметры поиска. for (const p of vSearchParams) { const kBodyParam = p[0]; const vBodyParam = p[1]; if (kBodyParam == 'data') { // Если встречаем [data] парсим ее как json ctx.body[kBodyParam] = JSON.parse(vBodyParam); } else { ctx.body[kBodyParam] = vBodyParam; } } } ctx.next(); } catch (e) { console.error(colors_1.default.red('Ошибка парсинга тела запроса - '), ctx.req.url); ctx.error(400); } }); } else { ctx.next(); } } exports.default = ParseBodyMiddleware; //# sourceMappingURL=ParseBodyMiddleware.js.map