UNPKG

@azure/core-http-compat

Version:

Core HTTP Compatibility Library to bridge the gap between Core V1 & V2 packages.

52 lines 1.98 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { createDisableKeepAlivePolicy, pipelineContainsDisableKeepAlivePolicy, } from "./policies/disableKeepAlivePolicy.js"; import { redirectPolicyName } from "@azure/core-rest-pipeline"; import { ServiceClient } from "@azure/core-client"; import { toCompatResponse } from "./response.js"; /** * Client to provide compatability between core V1 & V2. */ export class ExtendedServiceClient extends ServiceClient { constructor(options) { super(options); if (options.keepAliveOptions?.enable === false && !pipelineContainsDisableKeepAlivePolicy(this.pipeline)) { this.pipeline.addPolicy(createDisableKeepAlivePolicy()); } if (options.redirectOptions?.handleRedirects === false) { this.pipeline.removePolicy({ name: redirectPolicyName, }); } } /** * Compatible send operation request function. * * @param operationArguments - Operation arguments * @param operationSpec - Operation Spec * @returns */ async sendOperationRequest(operationArguments, operationSpec) { const userProvidedCallBack = operationArguments?.options?.onResponse; let lastResponse; function onResponse(rawResponse, flatResponse, error) { lastResponse = rawResponse; if (userProvidedCallBack) { userProvidedCallBack(rawResponse, flatResponse, error); } } operationArguments.options = { ...operationArguments.options, onResponse, }; const result = await super.sendOperationRequest(operationArguments, operationSpec); if (lastResponse) { Object.defineProperty(result, "_response", { value: toCompatResponse(lastResponse), }); } return result; } } //# sourceMappingURL=extendedClient.js.map