Skip to content

Commit 81a92ba

Browse files
committed
showing the warning message
1 parent 2ae1efa commit 81a92ba

File tree

5 files changed

+44
-15
lines changed

5 files changed

+44
-15
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@
144144
"runtimeDependencies": [
145145
{
146146
"description": "OmniSharp for Windows (.NET 4.6 / x86)",
147-
"url": "https://download.visualstudio.microsoft.com/download/pr/11655913/afaf4c0f0bee0304c8b1c55dfc190a9f/omnisharp-win-x86-1.29.1.zip",
147+
"url": "https://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback",
148148
"fallbackUrl": "https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x86-1.29.1.zip",
149149
"installPath": ".omnisharp/1.29.1",
150150
"platforms": [
@@ -158,7 +158,7 @@
158158
},
159159
{
160160
"description": "OmniSharp for Windows (.NET 4.6 / x64)",
161-
"url": "https://download.visualstudio.microsoft.com/download/pr/11655914/fc5dedbd95030e4015ffc24e48177255/omnisharp-win-x64-1.29.1.zip",
161+
"url": "https://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback",
162162
"fallbackUrl": "https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x64-1.29.1.zip",
163163
"installPath": ".omnisharp/1.29.1",
164164
"platforms": [

src/observers/WarningMessageObserver.ts

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import * as fs from 'async-file';
67
import { MessageItem, vscode } from '../vscodeAdapter';
7-
import { BaseEvent, OmnisharpServerOnError, OmnisharpServerMsBuildProjectDiagnostics } from "../omnisharp/loggingEvents";
8+
import { BaseEvent, OmnisharpServerOnError, OmnisharpServerMsBuildProjectDiagnostics, ZipFileError } from "../omnisharp/loggingEvents";
89
import { Scheduler } from 'rxjs/Scheduler';
910
import { Subject } from 'rxjs/Subject';
1011
import 'rxjs/add/operator/debounceTime';
12+
import { CreateTmpFile } from '../CreateTmpAsset';
13+
import * as vscode1 from 'vscode';
1114

1215
export interface MessageItemWithCommand extends MessageItem {
1316
command: string;
@@ -23,17 +26,12 @@ export class WarningMessageObserver {
2326
let value: MessageItemWithCommand;
2427
try {
2528
value = await this.vscode.window.showWarningMessage<MessageItemWithCommand>(message, { title: "Show Output", command: 'o.showOutput' });
26-
}
27-
catch (err){
28-
console.log(err);
29-
}
30-
if (value) {
31-
try {
29+
if (value) {
3230
await this.vscode.commands.executeCommand<string>(value.command);
3331
}
34-
catch (err) {
35-
console.log(err);
36-
}
32+
}
33+
catch (err) {
34+
console.log(err);
3735
}
3836
});
3937
}
@@ -46,6 +44,9 @@ export class WarningMessageObserver {
4644
case OmnisharpServerMsBuildProjectDiagnostics.name:
4745
this.handleOmnisharpServerMsBuildProjectDiagnostics(<OmnisharpServerMsBuildProjectDiagnostics>event);
4846
break;
47+
case ZipFileError.name:
48+
this.handleZipFileError(<ZipFileError>event);
49+
break;
4950
}
5051
}
5152

@@ -54,4 +55,27 @@ export class WarningMessageObserver {
5455
this.warningMessageDebouncer.next(event);
5556
}
5657
}
58+
59+
private async handleZipFileError(event: ZipFileError) {
60+
let tmpFile = await CreateTmpFile();
61+
let writestream = fs.createWriteStream(tmpFile.name);
62+
writestream.write(event.content);
63+
//once we have written to the file show a warning message to open it
64+
let value: MessageItemWithCommand;
65+
let message = " The downloaded file is not a zip. Please review your proxy settings or view the downloaded file below.";
66+
try {
67+
//let file = "C:\\Users\\akagarw\\AppData\\Local\\Temp\\package-32592bbSNWBM3SWGP";
68+
let file = vscode1.Uri.file(tmpFile.name);
69+
value = await this.vscode.window.showWarningMessage<MessageItemWithCommand>(message, { title: "View downloaded file", command: 'vscode.open' });
70+
if (value) {
71+
await this.vscode.commands.executeCommand<string>(value.command,file);
72+
}
73+
}
74+
catch (err) {
75+
console.log(err);
76+
}
77+
finally {
78+
tmpFile.dispose();
79+
}
80+
}
5781
}

src/omnisharp/loggingEvents.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ export class DownloadSizeObtained implements BaseEvent {
118118
constructor(public packageSize: number) { }
119119
}
120120

121+
export class ZipFileError implements BaseEvent {
122+
constructor(public content: string) { }
123+
}
124+
121125
export class DebuggerPrerequisiteFailure extends EventWithMessage { }
122126
export class DebuggerPrerequisiteWarning extends EventWithMessage { }
123127
export class CommandDotNetRestoreProgress extends EventWithMessage { }

src/packageManager/ZipInstaller.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,16 @@ import * as mkdirp from 'mkdirp';
88
import * as path from 'path';
99
import * as yauzl from 'yauzl';
1010
import { EventStream } from "../EventStream";
11-
import { InstallationStart } from "../omnisharp/loggingEvents";
11+
import { InstallationStart, ZipFileError } from "../omnisharp/loggingEvents";
1212
import { NestedError } from '../NestedError';
1313

1414
export async function InstallZip(buffer: Buffer, description: string, destinationInstallPath: string, binaries: string[], eventStream: EventStream): Promise<void> {
1515
eventStream.post(new InstallationStart(description));
1616

1717
return new Promise<void>((resolve, reject) => {
18-
yauzl.fromBuffer(buffer, { lazyEntries: true }, (err, zipFile) => {
18+
yauzl.fromBuffer(buffer, { lazyEntries: true }, async (err, zipFile) => {
1919
if (err) {
20+
eventStream.post(new ZipFileError(buffer.toString()));
2021
return reject(new NestedError('Immediate zip file error', err));
2122
}
2223

src/vscodeAdapter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,7 @@ export interface vscode {
899899
window: {
900900
activeTextEditor: TextEditor | undefined;
901901
showInformationMessage: (message: string, ...items: string[]) => Thenable<string | undefined>;
902-
showWarningMessage: <T extends MessageItem>(message: string, ...items: T[]) => Thenable<T | undefined>;
902+
showWarningMessage: <T extends MessageItem>(message: string, ...items: T[]) => Thenable<T | undefined>;
903903
};
904904
workspace: {
905905
getConfiguration: (section?: string, resource?: Uri) => WorkspaceConfiguration;

0 commit comments

Comments
 (0)