UNPKG

@curveball/bodyparser

Version:

A curveball middleware for parsing JSON and Text bodies.

41 lines 1.09 kB
import { BadRequest } from '@curveball/http-errors'; import * as qs from 'querystring'; export default function bodyParser() { return async (ctx, next) => { await parse(ctx); return next(); }; } function parse(ctx) { if (ctx.request.is('json')) { return parseJson(ctx); } if (ctx.request.is('x-www-form-urlencoded')) { return parseUrlEncoded(ctx); } if (ctx.request.type.startsWith('text/')) { return parseText(ctx); } return Promise.resolve(); } async function parseJson(ctx) { const body = await ctx.request.rawBody('utf-8'); if (body) { try { ctx.request.body = JSON.parse(body); } catch (e) { throw new BadRequest('Unable to parse JSON: ' + e.message); } } else { ctx.request.body = {}; } } async function parseText(ctx) { ctx.request.body = await ctx.request.rawBody('utf-8'); } async function parseUrlEncoded(ctx) { ctx.request.body = qs.parse(await ctx.request.rawBody('utf-8')); } //# sourceMappingURL=index.js.map