mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-10 07:46:22 +01:00
add more data to telemetry event (#207360)
This commit is contained in:
@@ -706,7 +706,7 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
return isEngineValid(engine, productVersion.version, productVersion.date);
|
||||
}
|
||||
|
||||
private async isValidVersion(rawGalleryExtensionVersion: IRawGalleryExtensionVersion, versionType: 'release' | 'prerelease' | 'any', compatible: boolean, allTargetPlatforms: TargetPlatform[], targetPlatform: TargetPlatform, productVersion: IProductVersion = { version: this.productService.version, date: this.productService.date }): Promise<boolean> {
|
||||
private async isValidVersion(extension: string, rawGalleryExtensionVersion: IRawGalleryExtensionVersion, versionType: 'release' | 'prerelease' | 'any', compatible: boolean, allTargetPlatforms: TargetPlatform[], targetPlatform: TargetPlatform, productVersion: IProductVersion = { version: this.productService.version, date: this.productService.date }): Promise<boolean> {
|
||||
if (!isTargetPlatformCompatible(getTargetPlatformForExtensionVersion(rawGalleryExtensionVersion), allTargetPlatforms, targetPlatform)) {
|
||||
return false;
|
||||
}
|
||||
@@ -717,7 +717,7 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
|
||||
if (compatible) {
|
||||
try {
|
||||
const engine = await this.getEngine(rawGalleryExtensionVersion);
|
||||
const engine = await this.getEngine(extension, rawGalleryExtensionVersion);
|
||||
if (!isEngineValid(engine, productVersion.version, productVersion.date)) {
|
||||
return false;
|
||||
}
|
||||
@@ -914,7 +914,7 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
continue;
|
||||
}
|
||||
// Allow any version if includePreRelease flag is set otherwise only release versions are allowed
|
||||
if (await this.isValidVersion(rawGalleryExtensionVersion, includePreRelease ? 'any' : 'release', criteria.compatible, allTargetPlatforms, criteria.targetPlatform, criteria.productVersion)) {
|
||||
if (await this.isValidVersion(getGalleryExtensionId(rawGalleryExtension.publisher.publisherName, rawGalleryExtension.extensionName), rawGalleryExtensionVersion, includePreRelease ? 'any' : 'release', criteria.compatible, allTargetPlatforms, criteria.targetPlatform, criteria.productVersion)) {
|
||||
return toExtension(rawGalleryExtension, rawGalleryExtensionVersion, allTargetPlatforms, queryContext);
|
||||
}
|
||||
if (version && rawGalleryExtensionVersion.version === version) {
|
||||
@@ -1046,7 +1046,7 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
} : extension.assets.download;
|
||||
|
||||
const headers: IHeaders | undefined = extension.queryContext?.[ACTIVITY_HEADER_NAME] ? { [ACTIVITY_HEADER_NAME]: extension.queryContext[ACTIVITY_HEADER_NAME] } : undefined;
|
||||
const context = await this.getAsset(downloadAsset, headers ? { headers } : undefined);
|
||||
const context = await this.getAsset(extension.identifier.id, downloadAsset, AssetType.VSIX, headers ? { headers } : undefined);
|
||||
await this.fileService.writeFile(location, context.stream);
|
||||
log(new Date().getTime() - startTime);
|
||||
}
|
||||
@@ -1058,13 +1058,13 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
|
||||
this.logService.trace('ExtensionGalleryService#downloadSignatureArchive', extension.identifier.id);
|
||||
|
||||
const context = await this.getAsset(extension.assets.signature);
|
||||
const context = await this.getAsset(extension.identifier.id, extension.assets.signature, AssetType.Signature);
|
||||
await this.fileService.writeFile(location, context.stream);
|
||||
}
|
||||
|
||||
async getReadme(extension: IGalleryExtension, token: CancellationToken): Promise<string> {
|
||||
if (extension.assets.readme) {
|
||||
const context = await this.getAsset(extension.assets.readme, {}, token);
|
||||
const context = await this.getAsset(extension.identifier.id, extension.assets.readme, AssetType.Details, {}, token);
|
||||
const content = await asTextOrError(context);
|
||||
return content || '';
|
||||
}
|
||||
@@ -1073,27 +1073,27 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
|
||||
async getManifest(extension: IGalleryExtension, token: CancellationToken): Promise<IExtensionManifest | null> {
|
||||
if (extension.assets.manifest) {
|
||||
const context = await this.getAsset(extension.assets.manifest, {}, token);
|
||||
const context = await this.getAsset(extension.identifier.id, extension.assets.manifest, AssetType.Manifest, {}, token);
|
||||
const text = await asTextOrError(context);
|
||||
return text ? JSON.parse(text) : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private async getManifestFromRawExtensionVersion(rawExtensionVersion: IRawGalleryExtensionVersion, token: CancellationToken): Promise<IExtensionManifest | null> {
|
||||
private async getManifestFromRawExtensionVersion(extension: string, rawExtensionVersion: IRawGalleryExtensionVersion, token: CancellationToken): Promise<IExtensionManifest | null> {
|
||||
const manifestAsset = getVersionAsset(rawExtensionVersion, AssetType.Manifest);
|
||||
if (!manifestAsset) {
|
||||
throw new Error('Manifest was not found');
|
||||
}
|
||||
const headers = { 'Accept-Encoding': 'gzip' };
|
||||
const context = await this.getAsset(manifestAsset, { headers });
|
||||
const context = await this.getAsset(extension, manifestAsset, AssetType.Manifest, { headers });
|
||||
return await asJson<IExtensionManifest>(context);
|
||||
}
|
||||
|
||||
async getCoreTranslation(extension: IGalleryExtension, languageId: string): Promise<ITranslation | null> {
|
||||
const asset = extension.assets.coreTranslations.filter(t => t[0] === languageId.toUpperCase())[0];
|
||||
if (asset) {
|
||||
const context = await this.getAsset(asset[1]);
|
||||
const context = await this.getAsset(extension.identifier.id, asset[1], asset[0]);
|
||||
const text = await asTextOrError(context);
|
||||
return text ? JSON.parse(text) : null;
|
||||
}
|
||||
@@ -1102,7 +1102,7 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
|
||||
async getChangelog(extension: IGalleryExtension, token: CancellationToken): Promise<string> {
|
||||
if (extension.assets.changelog) {
|
||||
const context = await this.getAsset(extension.assets.changelog, {}, token);
|
||||
const context = await this.getAsset(extension.identifier.id, extension.assets.changelog, AssetType.Changelog, {}, token);
|
||||
const content = await asTextOrError(context);
|
||||
return content || '';
|
||||
}
|
||||
@@ -1133,7 +1133,7 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
const validVersions: IRawGalleryExtensionVersion[] = [];
|
||||
await Promise.all(galleryExtensions[0].versions.map(async (version) => {
|
||||
try {
|
||||
if (await this.isValidVersion(version, includePreRelease ? 'any' : 'release', true, allTargetPlatforms, targetPlatform)) {
|
||||
if (await this.isValidVersion(extension.identifier.id, version, includePreRelease ? 'any' : 'release', true, allTargetPlatforms, targetPlatform)) {
|
||||
validVersions.push(version);
|
||||
}
|
||||
} catch (error) { /* Ignore error and skip version */ }
|
||||
@@ -1151,7 +1151,7 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
return result;
|
||||
}
|
||||
|
||||
private async getAsset(asset: IGalleryExtensionAsset, options: IRequestOptions = {}, token: CancellationToken = CancellationToken.None): Promise<IRequestContext> {
|
||||
private async getAsset(extension: string, asset: IGalleryExtensionAsset, assetType: string, options: IRequestOptions = {}, token: CancellationToken = CancellationToken.None): Promise<IRequestContext> {
|
||||
const commonHeaders = await this.commonHeadersPromise;
|
||||
const baseOptions = { type: 'GET' };
|
||||
const headers = { ...commonHeaders, ...(options.headers || {}) };
|
||||
@@ -1177,24 +1177,26 @@ abstract class AbstractExtensionGalleryService implements IExtensionGalleryServi
|
||||
type GalleryServiceCDNFallbackClassification = {
|
||||
owner: 'sandy081';
|
||||
comment: 'Fallback request information when the primary asset request to CDN fails';
|
||||
url: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'asset url that failed' };
|
||||
extension: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'extension name' };
|
||||
assetType: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'asset that failed' };
|
||||
message: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'error message' };
|
||||
};
|
||||
type GalleryServiceCDNFallbackEvent = {
|
||||
url: string;
|
||||
extension: string;
|
||||
assetType: string;
|
||||
message: string;
|
||||
};
|
||||
this.telemetryService.publicLog2<GalleryServiceCDNFallbackEvent, GalleryServiceCDNFallbackClassification>('galleryService:cdnFallback', { url, message });
|
||||
this.telemetryService.publicLog2<GalleryServiceCDNFallbackEvent, GalleryServiceCDNFallbackClassification>('galleryService:cdnFallback', { extension, assetType, message });
|
||||
|
||||
const fallbackOptions = { ...options, url: fallbackUrl };
|
||||
return this.requestService.request(fallbackOptions, token);
|
||||
}
|
||||
}
|
||||
|
||||
private async getEngine(rawExtensionVersion: IRawGalleryExtensionVersion): Promise<string> {
|
||||
private async getEngine(extension: string, rawExtensionVersion: IRawGalleryExtensionVersion): Promise<string> {
|
||||
let engine = getEngine(rawExtensionVersion);
|
||||
if (!engine) {
|
||||
const manifest = await this.getManifestFromRawExtensionVersion(rawExtensionVersion, CancellationToken.None);
|
||||
const manifest = await this.getManifestFromRawExtensionVersion(extension, rawExtensionVersion, CancellationToken.None);
|
||||
if (!manifest) {
|
||||
throw new Error('Manifest was not found');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user