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.

25 lines (24 loc) 1.11 kB
import { HttpRequest } from "@smithy/protocol-http"; import { SMITHY_CONTEXT_KEY, } from "@smithy/types"; import { getSmithyContext } from "@smithy/util-middleware"; const defaultErrorHandler = (signingProperties) => (error) => { throw error; }; const defaultSuccessHandler = (httpResponse, signingProperties) => { }; export const httpSigningMiddleware = (config) => (next, context) => async (args) => { if (!HttpRequest.isInstance(args.request)) { return next(args); } const smithyContext = getSmithyContext(context); const scheme = smithyContext.selectedHttpAuthScheme; if (!scheme) { throw new Error(`No HttpAuthScheme was selected: unable to sign request`); } const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme; const output = await next({ ...args, request: await signer.sign(args.request, identity, signingProperties), }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); return output; };