UNPKG

@dvsa/appdev-api-common

Version:

Utils library for common API functionality

32 lines (31 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DecodeBase64GzipPayload = void 0; const http_status_codes_1 = require("../api/http-status-codes"); const compression_1 = require("./compression"); /** * Middleware to decode base64+gzip encoded request payloads and turn them into their JSON equivalent * @param {Request} request - Express request object * @param {Response} response - Express response object * @param {NextFunction} next - Next function to pass control to the next middleware * @param {Logger} logger - logger to indicate encoded requests * @constructor */ const DecodeBase64GzipPayload = (request, response, next, logger) => { const compressionHeaderValue = "base64+gzip"; try { if (typeof request.body === "string" && request.header("X-Payload-Encoding") === compressionHeaderValue) { logger?.debug("Encoded request received"); request.body = compression_1.DataCompression.decompress(request.body); } } catch (err) { return response.status(http_status_codes_1.HttpStatus.BAD_REQUEST).send({ error: "Bad request", message: err instanceof Error ? err.message : JSON.stringify(err), }); } next(); }; exports.DecodeBase64GzipPayload = DecodeBase64GzipPayload;