38 lines
1.7 KiB
JavaScript
38 lines
1.7 KiB
JavaScript
import { setFeature } from "@aws-sdk/core";
|
|
import { RequestChecksumCalculation, ResponseChecksumValidation } from "./constants";
|
|
export const flexibleChecksumsInputMiddlewareOptions = {
|
|
name: "flexibleChecksumsInputMiddleware",
|
|
toMiddleware: "serializerMiddleware",
|
|
relation: "before",
|
|
tags: ["BODY_CHECKSUM"],
|
|
override: true,
|
|
};
|
|
export const flexibleChecksumsInputMiddleware = (config, middlewareConfig) => (next, context) => async (args) => {
|
|
const input = args.input;
|
|
const { requestValidationModeMember } = middlewareConfig;
|
|
const requestChecksumCalculation = await config.requestChecksumCalculation();
|
|
const responseChecksumValidation = await config.responseChecksumValidation();
|
|
switch (requestChecksumCalculation) {
|
|
case RequestChecksumCalculation.WHEN_REQUIRED:
|
|
setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED", "a");
|
|
break;
|
|
case RequestChecksumCalculation.WHEN_SUPPORTED:
|
|
setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED", "Z");
|
|
break;
|
|
}
|
|
switch (responseChecksumValidation) {
|
|
case ResponseChecksumValidation.WHEN_REQUIRED:
|
|
setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED", "c");
|
|
break;
|
|
case ResponseChecksumValidation.WHEN_SUPPORTED:
|
|
setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED", "b");
|
|
break;
|
|
}
|
|
if (requestValidationModeMember && !input[requestValidationModeMember]) {
|
|
if (responseChecksumValidation === ResponseChecksumValidation.WHEN_SUPPORTED) {
|
|
input[requestValidationModeMember] = "ENABLED";
|
|
}
|
|
}
|
|
return next(args);
|
|
};
|