Skip to content

Commit 6e8c48d

Browse files
authored
refactor gallery service (microsoft#243395)
1 parent 07cbc58 commit 6e8c48d

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

src/vs/platform/extensionManagement/common/extensionGalleryService.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1856,7 +1856,48 @@ export abstract class AbstractExtensionGalleryService implements IExtensionGalle
18561856
return { malicious, deprecated, search, extensionsEnabledWithPreRelease };
18571857
}
18581858

1859+
private extensionGalleryManifestPromise: Promise<IExtensionGalleryManifest> | undefined;
18591860
private async getExtensionGalleryManifest(): Promise<IExtensionGalleryManifest> {
1861+
if (!this.extensionGalleryManifestPromise) {
1862+
const configuredServiceUrl = this.configurationService.inspect<string>('extensions.gallery.serviceUrl').userLocalValue;
1863+
if (configuredServiceUrl) {
1864+
this.extensionGalleryManifestPromise = this.getExtensionGalleryManifestFromServiceUrl(configuredServiceUrl);
1865+
} else {
1866+
this.extensionGalleryManifestPromise = this.getExtensionGalleryManifestFromProduct();
1867+
}
1868+
}
1869+
return this.extensionGalleryManifestPromise;
1870+
}
1871+
1872+
private async getExtensionGalleryManifestFromServiceUrl(url: string): Promise<IExtensionGalleryManifest> {
1873+
const commonHeaders = await this.commonHeadersPromise;
1874+
const headers = {
1875+
...commonHeaders,
1876+
'Content-Type': 'application/json',
1877+
'Accept-Encoding': 'gzip',
1878+
};
1879+
1880+
try {
1881+
const context = await this.requestService.request({
1882+
type: 'GET',
1883+
url,
1884+
headers,
1885+
}, CancellationToken.None);
1886+
1887+
const extensionGalleryManifest = await asJson<IExtensionGalleryManifest>(context);
1888+
1889+
if (!extensionGalleryManifest) {
1890+
throw new Error('Unable to retrieve extension gallery manifest.');
1891+
}
1892+
1893+
return extensionGalleryManifest;
1894+
} catch (error) {
1895+
this.logService.error(error);
1896+
throw error;
1897+
}
1898+
}
1899+
1900+
private async getExtensionGalleryManifestFromProduct(): Promise<IExtensionGalleryManifest> {
18601901
const extensionsGallery = this.productService.extensionsGallery as ExtensionGalleryConfig | undefined;
18611902
if (!extensionsGallery?.serviceUrl) {
18621903
throw new Error('No extension gallery service configured.');

0 commit comments

Comments
 (0)