import { endpointMiddlewareOptions } from "@smithy/middleware-endpoint"; import { HandlerExecutionContext, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, IdentityProviderConfig, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions, } from "@smithy/types"; import { httpAuthSchemeMiddleware, PreviouslyResolved } from "./httpAuthSchemeMiddleware"; /** * @internal */ export const httpAuthSchemeEndpointRuleSetMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions = { step: "serialize", tags: ["HTTP_AUTH_SCHEME"], name: "httpAuthSchemeMiddleware", override: true, relation: "before", toMiddleware: endpointMiddlewareOptions.name!, }; /** * @internal */ interface HttpAuthSchemeEndpointRuleSetPluginOptions< TConfig extends object, TContext extends HandlerExecutionContext, TParameters extends HttpAuthSchemeParameters, TInput extends object > { httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; identityProviderConfigProvider: (config: TConfig) => Promise; } /** * @internal */ export const getHttpAuthSchemeEndpointRuleSetPlugin = < TConfig extends object, TContext extends HandlerExecutionContext, TParameters extends HttpAuthSchemeParameters, TInput extends object >( config: TConfig & PreviouslyResolved, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }: HttpAuthSchemeEndpointRuleSetPluginOptions ): Pluggable => ({ applyToStack: (clientStack) => { clientStack.addRelativeTo( httpAuthSchemeMiddleware(config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }), httpAuthSchemeEndpointRuleSetMiddlewareOptions ); }, });