@aws-amplify/core
Version:
Core category of aws-amplify
32 lines (27 loc) • 1.16 kB
text/typescript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import { HttpRequest, HttpResponse, Middleware } from '../../types';
import { amplifyUuid } from '../../../libraryUtils';
import { AMZ_SDK_INVOCATION_ID_HEADER } from './constants';
/**
* Middleware injects a UUID string to `amz-sdk-invocation-id` header.
* if the header is not set already. This header is helpful to provide
* observability to group the requests caused by automatic retry.
*
* This middleware is standalone because of extra UUID dependency, we will
* NOT use this middleware for API categories.
*
* Ref: https://sdk.amazonaws.com/kotlin/api/smithy-kotlin/api/1.0.9/http-client/aws.smithy.kotlin.runtime.http.operation/-http-operation-context/-sdk-invocation-id.html
*/
export const amzSdkInvocationIdHeaderMiddlewareFactory: Middleware<
HttpRequest,
HttpResponse,
object
> = () => next => {
return async function amzSdkInvocationIdHeaderMiddleware(request) {
if (!request.headers[AMZ_SDK_INVOCATION_ID_HEADER]) {
request.headers[AMZ_SDK_INVOCATION_ID_HEADER] = amplifyUuid();
}
return next(request);
};
};