open-next-cdk
Version:
Deploy a NextJS app using OpenNext packaging to serverless AWS using CDK
27 lines (26 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateChecksumFromResponse = void 0;
const getChecksum_1 = require("./getChecksum");
const getChecksumAlgorithmListForResponse_1 = require("./getChecksumAlgorithmListForResponse");
const getChecksumLocationName_1 = require("./getChecksumLocationName");
const selectChecksumAlgorithmFunction_1 = require("./selectChecksumAlgorithmFunction");
const validateChecksumFromResponse = async (response, { config, responseAlgorithms }) => {
const checksumAlgorithms = (0, getChecksumAlgorithmListForResponse_1.getChecksumAlgorithmListForResponse)(responseAlgorithms);
const { body: responseBody, headers: responseHeaders } = response;
for (const algorithm of checksumAlgorithms) {
const responseHeader = (0, getChecksumLocationName_1.getChecksumLocationName)(algorithm);
const checksumFromResponse = responseHeaders[responseHeader];
if (checksumFromResponse) {
const checksumAlgorithmFn = (0, selectChecksumAlgorithmFunction_1.selectChecksumAlgorithmFunction)(algorithm, config);
const { streamHasher, base64Encoder } = config;
const checksum = await (0, getChecksum_1.getChecksum)(responseBody, { streamHasher, checksumAlgorithmFn, base64Encoder });
if (checksum === checksumFromResponse) {
break;
}
throw new Error(`Checksum mismatch: expected "${checksum}" but received "${checksumFromResponse}"` +
` in response header "${responseHeader}".`);
}
}
};
exports.validateChecksumFromResponse = validateChecksumFromResponse;