From c08d8b424c9aa5120155b0ae8a03f95cff2c90bd Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 16 Jul 2019 17:09:34 +0200 Subject: [PATCH] introduce gallery machine id resource in env --- .../environment/common/environment.ts | 2 + .../environment/node/environmentService.ts | 3 ++ .../common/extensionGalleryService.ts | 45 ++++++++++--------- .../environment/browser/environmentService.ts | 1 + 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/vs/platform/environment/common/environment.ts b/src/vs/platform/environment/common/environment.ts index d889e685a0b..e5e0f59d3ef 100644 --- a/src/vs/platform/environment/common/environment.ts +++ b/src/vs/platform/environment/common/environment.ts @@ -170,4 +170,6 @@ export interface IEnvironmentService { webviewEndpoint?: string; readonly webviewResourceRoot: string; readonly webviewCspSource: string; + + readonly galleryMachineIdResource?: URI; } diff --git a/src/vs/platform/environment/node/environmentService.ts b/src/vs/platform/environment/node/environmentService.ts index dcda4352784..e4635b7fc32 100644 --- a/src/vs/platform/environment/node/environmentService.ts +++ b/src/vs/platform/environment/node/environmentService.ts @@ -266,6 +266,9 @@ export class EnvironmentService implements IEnvironmentService { @memoize get nodeCachedDataDir(): string | undefined { return process.env['VSCODE_NODE_CACHED_DATA_DIR'] || undefined; } + @memoize + get galleryMachineIdResource(): URI { return resources.joinPath(URI.file(this.userDataPath), 'machineid'); } + get disableUpdates(): boolean { return !!this._args['disable-updates']; } get disableCrashReporter(): boolean { return !!this._args['disable-crash-reporter']; } diff --git a/src/vs/platform/extensionManagement/common/extensionGalleryService.ts b/src/vs/platform/extensionManagement/common/extensionGalleryService.ts index 08c4c3a022f..3c7e35fb2f3 100644 --- a/src/vs/platform/extensionManagement/common/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/common/extensionGalleryService.ts @@ -9,7 +9,7 @@ import { getGalleryExtensionId, getGalleryExtensionTelemetryData, adoptToGallery import { assign, getOrDefault } from 'vs/base/common/objects'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IPager } from 'vs/base/common/paging'; -import { IRequestService, IRequestOptions, IRequestContext, asJson, asText } from 'vs/platform/request/common/request'; +import { IRequestService, IRequestOptions, IRequestContext, asJson, asText, IHeaders } from 'vs/platform/request/common/request'; import { isEngineValid } from 'vs/platform/extensions/common/extensionValidator'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { generateUuid, isUUID } from 'vs/base/common/uuid'; @@ -774,29 +774,30 @@ export class ExtensionGalleryService implements IExtensionGalleryService { } export async function resolveMarketplaceHeaders(version: string, environmentService: IEnvironmentService, fileService: IFileService): Promise<{ [key: string]: string; }> { - const marketplaceMachineIdFile = joinPath(URI.file(environmentService.userDataPath), 'machineid'); - + const headers: IHeaders = { + 'X-Market-Client-Id': `VSCode ${version}`, + 'User-Agent': `VSCode ${version}` + }; let uuid: string | null = null; - - try { - const contents = await fileService.readFile(marketplaceMachineIdFile); - const value = contents.value.toString(); - uuid = isUUID(value) ? value : null; - } catch (e) { - uuid = null; - } - - if (!uuid) { - uuid = generateUuid(); + if (environmentService.galleryMachineIdResource) { try { - await fileService.writeFile(marketplaceMachineIdFile, VSBuffer.fromString(uuid)); - } catch (error) { - //noop + const contents = await fileService.readFile(environmentService.galleryMachineIdResource); + const value = contents.value.toString(); + uuid = isUUID(value) ? value : null; + } catch (e) { + uuid = null; } + + if (!uuid) { + uuid = generateUuid(); + try { + await fileService.writeFile(environmentService.galleryMachineIdResource, VSBuffer.fromString(uuid)); + } catch (error) { + //noop + } + } + headers['X-Market-User-Id'] = uuid; } - return { - 'X-Market-Client-Id': `VSCode ${version}`, - 'User-Agent': `VSCode ${version}`, - 'X-Market-User-Id': uuid - }; + return headers; + } \ No newline at end of file diff --git a/src/vs/workbench/services/environment/browser/environmentService.ts b/src/vs/workbench/services/environment/browser/environmentService.ts index 6ee56a1d50e..f6d67298ba0 100644 --- a/src/vs/workbench/services/environment/browser/environmentService.ts +++ b/src/vs/workbench/services/environment/browser/environmentService.ts @@ -143,6 +143,7 @@ export class BrowserWorkbenchEnvironmentService implements IEnvironmentService { driverHandle?: string; driverVerbose: boolean; webviewEndpoint?: string; + galleryMachineIdResource?: URI; get webviewResourceRoot(): string { return this.webviewEndpoint ? this.webviewEndpoint + '/vscode-resource{{resource}}' : 'vscode-resource:{{resource}}'; -- GitLab