| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // Licensed under the MIT License. See License.txt in the project root for license information.
- import { HttpHeaders } from "../httpHeaders";
- import { HttpOperationResponse } from "../httpOperationResponse";
- import { Constants } from "../util/constants";
- import { WebResource } from "../webResource";
- import { getDefaultUserAgentKey, getPlatformSpecificData } from "./msRestUserAgentPolicy";
- import { BaseRequestPolicy, RequestPolicy, RequestPolicyFactory, RequestPolicyOptions } from "./requestPolicy";
- export type TelemetryInfo = { key?: string; value?: string };
- function getRuntimeInfo(): TelemetryInfo[] {
- const msRestRuntime = {
- key: "ms-rest-js",
- value: Constants.msRestVersion
- };
- return [msRestRuntime];
- }
- function getUserAgentString(telemetryInfo: TelemetryInfo[], keySeparator = " ", valueSeparator = "/"): string {
- return telemetryInfo.map(info => {
- const value = info.value ? `${valueSeparator}${info.value}` : "";
- return `${info.key}${value}`;
- }).join(keySeparator);
- }
- export const getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
- export function getDefaultUserAgentValue(): string {
- const runtimeInfo = getRuntimeInfo();
- const platformSpecificData = getPlatformSpecificData();
- const userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
- return userAgent;
- }
- export function userAgentPolicy(userAgentData?: TelemetryInfo): RequestPolicyFactory {
- const key: string = (!userAgentData || userAgentData.key == undefined) ? getDefaultUserAgentKey() : userAgentData.key;
- const value: string = (!userAgentData || userAgentData.value == undefined) ? getDefaultUserAgentValue() : userAgentData.value;
- return {
- create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions) => {
- return new UserAgentPolicy(nextPolicy, options, key, value);
- }
- };
- }
- export class UserAgentPolicy extends BaseRequestPolicy {
- constructor(readonly _nextPolicy: RequestPolicy, readonly _options: RequestPolicyOptions, protected headerKey: string, protected headerValue: string) {
- super(_nextPolicy, _options);
- }
- sendRequest(request: WebResource): Promise<HttpOperationResponse> {
- this.addUserAgentHeader(request);
- return this._nextPolicy.sendRequest(request);
- }
- addUserAgentHeader(request: WebResource): void {
- if (!request.headers) {
- request.headers = new HttpHeaders();
- }
- if (!request.headers.get(this.headerKey) && this.headerValue) {
- request.headers.set(this.headerKey, this.headerValue);
- }
- }
- }
|