初始化环境文件
This commit is contained in:
48
node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsResponseMiddleware.js
generated
vendored
Normal file
48
node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsResponseMiddleware.js
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
import { HttpRequest } from "@smithy/protocol-http";
|
||||
import { getChecksumAlgorithmListForResponse } from "./getChecksumAlgorithmListForResponse";
|
||||
import { getChecksumLocationName } from "./getChecksumLocationName";
|
||||
import { isChecksumWithPartNumber } from "./isChecksumWithPartNumber";
|
||||
import { validateChecksumFromResponse } from "./validateChecksumFromResponse";
|
||||
export const flexibleChecksumsResponseMiddlewareOptions = {
|
||||
name: "flexibleChecksumsResponseMiddleware",
|
||||
toMiddleware: "deserializerMiddleware",
|
||||
relation: "after",
|
||||
tags: ["BODY_CHECKSUM"],
|
||||
override: true,
|
||||
};
|
||||
export const flexibleChecksumsResponseMiddleware = (config, middlewareConfig) => (next, context) => async (args) => {
|
||||
if (!HttpRequest.isInstance(args.request)) {
|
||||
return next(args);
|
||||
}
|
||||
const input = args.input;
|
||||
const result = await next(args);
|
||||
const response = result.response;
|
||||
const { requestValidationModeMember, responseAlgorithms } = middlewareConfig;
|
||||
if (requestValidationModeMember && input[requestValidationModeMember] === "ENABLED") {
|
||||
const { clientName, commandName } = context;
|
||||
const customChecksumAlgorithms = Object.keys(config.checksumAlgorithms ?? {}).filter((algorithm) => {
|
||||
const responseHeader = getChecksumLocationName(algorithm);
|
||||
return response.headers[responseHeader] !== undefined;
|
||||
});
|
||||
const algoList = getChecksumAlgorithmListForResponse([
|
||||
...(responseAlgorithms ?? []),
|
||||
...customChecksumAlgorithms,
|
||||
]);
|
||||
const isS3WholeObjectMultipartGetResponseChecksum = clientName === "S3Client" &&
|
||||
commandName === "GetObjectCommand" &&
|
||||
algoList.every((algorithm) => {
|
||||
const responseHeader = getChecksumLocationName(algorithm);
|
||||
const checksumFromResponse = response.headers[responseHeader];
|
||||
return !checksumFromResponse || isChecksumWithPartNumber(checksumFromResponse);
|
||||
});
|
||||
if (isS3WholeObjectMultipartGetResponseChecksum) {
|
||||
return result;
|
||||
}
|
||||
await validateChecksumFromResponse(response, {
|
||||
config,
|
||||
responseAlgorithms: algoList,
|
||||
logger: context.logger,
|
||||
});
|
||||
}
|
||||
return result;
|
||||
};
|
||||
Reference in New Issue
Block a user