UNPKG

cdk-amazon-chime-resources

Version:

![Experimental](https://img.shields.io/badge/experimental-important.svg?style=for-the-badge)

66 lines (65 loc) 2.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getUserAgentPlugin = exports.getUserAgentMiddlewareOptions = exports.userAgentMiddleware = void 0; const protocol_http_1 = require("@aws-sdk/protocol-http"); const util_endpoints_1 = require("@aws-sdk/util-endpoints"); const constants_1 = require("./constants"); const userAgentMiddleware = (options) => (next, context) => async (args) => { var _a, _b; const { request } = args; if (!protocol_http_1.HttpRequest.isInstance(request)) return next(args); const { headers } = request; const userAgent = ((_a = context === null || context === void 0 ? void 0 : context.userAgent) === null || _a === void 0 ? void 0 : _a.map(escapeUserAgent)) || []; const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent); const customUserAgent = ((_b = options === null || options === void 0 ? void 0 : options.customUserAgent) === null || _b === void 0 ? void 0 : _b.map(escapeUserAgent)) || []; const prefix = (0, util_endpoints_1.getUserAgentPrefix)(); const sdkUserAgentValue = (prefix ? [prefix] : []) .concat([...defaultUserAgent, ...userAgent, ...customUserAgent]) .join(constants_1.SPACE); const normalUAValue = [ ...defaultUserAgent.filter((section) => section.startsWith("aws-sdk-")), ...customUserAgent, ].join(constants_1.SPACE); if (options.runtime !== "browser") { if (normalUAValue) { headers[constants_1.X_AMZ_USER_AGENT] = headers[constants_1.X_AMZ_USER_AGENT] ? `${headers[constants_1.USER_AGENT]} ${normalUAValue}` : normalUAValue; } headers[constants_1.USER_AGENT] = sdkUserAgentValue; } else { headers[constants_1.X_AMZ_USER_AGENT] = sdkUserAgentValue; } return next({ ...args, request, }); }; exports.userAgentMiddleware = userAgentMiddleware; const escapeUserAgent = ([name, version]) => { const prefixSeparatorIndex = name.indexOf("/"); const prefix = name.substring(0, prefixSeparatorIndex); let uaName = name.substring(prefixSeparatorIndex + 1); if (prefix === "api") { uaName = uaName.toLowerCase(); } return [prefix, uaName, version] .filter((item) => item && item.length > 0) .map((item) => item === null || item === void 0 ? void 0 : item.replace(constants_1.UA_ESCAPE_REGEX, "_")) .join("/"); }; exports.getUserAgentMiddlewareOptions = { name: "getUserAgentMiddleware", step: "build", priority: "low", tags: ["SET_USER_AGENT", "USER_AGENT"], override: true, }; const getUserAgentPlugin = (config) => ({ applyToStack: (clientStack) => { clientStack.add((0, exports.userAgentMiddleware)(config), exports.getUserAgentMiddlewareOptions); }, }); exports.getUserAgentPlugin = getUserAgentPlugin;