UNPKG

serverless-spy

Version:

CDK-based library for writing elegant integration tests on AWS serverless architecture and an additional web console to monitor events in real time.

40 lines (39 loc) 1.33 kB
import { HttpRequest } from "@smithy/protocol-http"; const CONTENT_LENGTH_HEADER = "content-length"; export function contentLengthMiddleware(bodyLengthChecker) { return (next) => async (args) => { const request = args.request; if (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, }); }; } export const contentLengthMiddlewareOptions = { step: "build", tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], name: "contentLengthMiddleware", override: true, }; export const getContentLengthPlugin = (options) => ({ applyToStack: (clientStack) => { clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions); }, });