UNPKG

kequapp

Version:

DEPRECATED: renamed to @kequtech/arbor

39 lines (38 loc) 1.13 kB
import { Ex } from "../ex.js"; export function createParseBody(parsers, _default) { return (body) => { const contentType = body.headers['content-type'] ?? 'text/plain'; try { for (const key of Object.keys(parsers)) { if (contentType.startsWith(key)) { return parsers[key](body); } } if (_default) return _default(body); throw new Error('Unrecognized content type'); } catch (error) { throw Ex.BadRequest('Unable to process request', { contentType, error, }); } }; } export function parseUrlEncoded(body) { const params = new URLSearchParams(body.data.toString()); const result = {}; for (const key of params.keys()) { if (params.getAll(key).length > 1) { result[key] = params.getAll(key); } else { result[key] = params.get(key); } } return result; } export function parseJson(body) { return JSON.parse(body.data.toString()); }