@@ -1856,7 +1856,48 @@ export abstract class AbstractExtensionGalleryService implements IExtensionGalle
1856
1856
return { malicious, deprecated, search, extensionsEnabledWithPreRelease } ;
1857
1857
}
1858
1858
1859
+ private extensionGalleryManifestPromise : Promise < IExtensionGalleryManifest > | undefined ;
1859
1860
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 > {
1860
1901
const extensionsGallery = this . productService . extensionsGallery as ExtensionGalleryConfig | undefined ;
1861
1902
if ( ! extensionsGallery ?. serviceUrl ) {
1862
1903
throw new Error ( 'No extension gallery service configured.' ) ;
0 commit comments