Skip to content

Commit

Permalink
Download extensions through request service
Browse files Browse the repository at this point in the history
  • Loading branch information
msujew committed May 25, 2022
1 parent e15cbce commit 85423b5
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 31 deletions.
4 changes: 1 addition & 3 deletions packages/vsx-registry/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
"@theia/workspace": "1.25.0",
"@types/showdown": "^1.7.1",
"p-debounce": "^2.1.0",
"requestretry": "^7.0.0",
"semver": "^5.4.1",
"showdown": "^1.9.1",
"uuid": "^8.0.0"
Expand Down Expand Up @@ -51,8 +50,7 @@
"watch": "theiaext watch"
},
"devDependencies": {
"@theia/ext-scripts": "1.25.0",
"@types/requestretry": "^1.12.8"
"@theia/ext-scripts": "1.25.0"
},
"nyc": {
"extends": "../../configs/nyc.json"
Expand Down
32 changes: 13 additions & 19 deletions packages/vsx-registry/src/node/vsx-extension-resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ import * as path from 'path';
import * as semver from 'semver';
import * as fs from '@theia/core/shared/fs-extra';
import { v4 as uuidv4 } from 'uuid';
import * as requestretry from 'requestretry';
import { injectable, inject } from '@theia/core/shared/inversify';
import URI from '@theia/core/lib/common/uri';
import { PluginDeployerHandler, PluginDeployerResolver, PluginDeployerResolverContext } from '@theia/plugin-ext/lib/common/plugin-protocol';
import { VSXExtensionUri } from '../common/vsx-extension-uri';
import { OVSXClientProvider } from '../common/ovsx-client-provider';
import { VSXExtensionRaw } from '@theia/ovsx-client';
import { RequestService } from '@theia/core/shared/@theia/request';

@injectable()
export class VSXExtensionResolver implements PluginDeployerResolver {
Expand All @@ -36,6 +36,9 @@ export class VSXExtensionResolver implements PluginDeployerResolver {
@inject(PluginDeployerHandler)
protected pluginDeployerHandler: PluginDeployerHandler;

@inject(RequestService)
protected requestService: RequestService;

protected readonly downloadPath: string;

constructor() {
Expand Down Expand Up @@ -95,23 +98,14 @@ export class VSXExtensionResolver implements PluginDeployerResolver {
}

protected async download(downloadUrl: string, downloadPath: string): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
requestretry(downloadUrl, {
method: 'GET',
maxAttempts: 5,
retryDelay: 2000,
retryStrategy: requestretry.RetryStrategies.HTTPOrNetworkError
}, (err, response) => {
if (err) {
reject(err);
} else if (response && response.statusCode === 404) {
resolve(false);
} else if (response && response.statusCode !== 200) {
reject(new Error(response.statusMessage));
}
}).pipe(fs.createWriteStream(downloadPath))
.on('error', reject)
.on('close', () => resolve(true));
});
const context = await this.requestService.request({ url: downloadUrl });
if (context.res.statusCode === 404) {
return false;
} else if (context.res.statusCode !== 200) {
throw new Error('Request returned status code: ' + context.res.statusCode);
} else {
await fs.writeFile(downloadPath, context.buffer);
return true;
}
}
}
10 changes: 1 addition & 9 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2580,7 +2580,7 @@
"@types/scheduler" "*"
csstype "^3.0.2"

"@types/request@*", "@types/request@^2.0.3":
"@types/request@^2.0.3":
version "2.48.8"
resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.8.tgz#0b90fde3b655ab50976cb8c5ac00faca22f5a82c"
integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==
Expand All @@ -2590,14 +2590,6 @@
"@types/tough-cookie" "*"
form-data "^2.5.0"

"@types/requestretry@^1.12.8":
version "1.12.8"
resolved "https://registry.yarnpkg.com/@types/requestretry/-/requestretry-1.12.8.tgz#d3f02ee0b4d18e1cee15324506704052a25e1ebd"
integrity sha512-NKdv2WmEe6/V1PmJrflfvGVN9bvuOsnHmNRC4m8TFXPMQnRFKvnnkFN4I6AxAtw4hUi2h3A+z/aH+ir2HYTNOg==
dependencies:
"@types/node" "*"
"@types/request" "*"

"@types/responselike@*", "@types/responselike@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29"
Expand Down

0 comments on commit 85423b5

Please # to comment.