"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getContentLengthPlugin = exports.contentLengthMiddlewareOptions = exports.contentLengthMiddleware = void 0; const protocol_http_1 = require("@aws-sdk/protocol-http"); const CONTENT_LENGTH_HEADER = "content-length"; function contentLengthMiddleware(bodyLengthChecker) { return (next) => async (args) => { const request = args.request; if (protocol_http_1.HttpRequest.isInstance(request)) { const { body, headers } = request; if (body && Object.keys(headers) .map((str) => str.toLowerCase()) .indexOf(CONTENT_LENGTH_HEADER) === -1) { try { const length = bodyLengthChecker(body); request.headers = { ...request.headers, [CONTENT_LENGTH_HEADER]: String(length), }; } catch (error) { } } } return next({ ...args, request, }); }; } exports.contentLengthMiddleware = contentLengthMiddleware; exports.contentLengthMiddlewareOptions = { step: "build", tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], name: "contentLengthMiddleware", override: true, }; const getContentLengthPlugin = (options) => ({ applyToStack: (clientStack) => { clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), exports.contentLengthMiddlewareOptions); }, }); exports.getContentLengthPlugin = getContentLengthPlugin;