Skip to content

Commit eebb449

Browse files
committed
Move Promise.xhr from JS to TS (in base/common/network)
1 parent b38055c commit eebb449

5 files changed

Lines changed: 70 additions & 15 deletions

File tree

src/vs/base/common/network.ts

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*--------------------------------------------------------------------------------------------*/
55
'use strict';
66

7+
import {TPromise} from 'vs/base/common/winjs.base';
8+
79
export namespace Schemas {
810

911
/**
@@ -18,3 +20,65 @@ export namespace Schemas {
1820

1921
export var file:string = 'file';
2022
}
23+
24+
export interface IXHROptions {
25+
type?:string;
26+
url?:string;
27+
user?:string;
28+
password?:string;
29+
responseType?:string;
30+
headers?:any;
31+
customRequestInitializer?:(req:any)=>void;
32+
data?:any;
33+
}
34+
35+
export function xhr(options:IXHROptions): TPromise<XMLHttpRequest> {
36+
let req:XMLHttpRequest = null;
37+
let canceled = false;
38+
39+
return new TPromise<XMLHttpRequest>((c, e, p) => {
40+
req = new XMLHttpRequest();
41+
42+
req.onreadystatechange = () => {
43+
if (canceled) {
44+
return;
45+
}
46+
47+
if (req.readyState === 4) {
48+
// Handle 1223: http://bugs.jquery.com/ticket/1450
49+
if ((req.status >= 200 && req.status < 300) || req.status === 1223) {
50+
c(req);
51+
} else {
52+
e(req);
53+
}
54+
req.onreadystatechange = () => { };
55+
} else {
56+
p(req);
57+
}
58+
};
59+
60+
req.open(
61+
options.type || 'GET',
62+
options.url,
63+
// Promise based XHR does not support sync.
64+
//
65+
true,
66+
options.user,
67+
options.password
68+
);
69+
req.responseType = options.responseType || '';
70+
71+
Object.keys(options.headers || {}).forEach((k) => {
72+
req.setRequestHeader(k, options.headers[k]);
73+
});
74+
75+
if (options.customRequestInitializer) {
76+
options.customRequestInitializer(req);
77+
}
78+
79+
req.send(options.data);
80+
}, () => {
81+
canceled = true;
82+
req.abort();
83+
});
84+
}

src/vs/base/common/winjs.base.d.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,6 @@ export declare class Promise {
4343
public cancel():void;
4444
}
4545

46-
export interface IXHROptions {
47-
type?:string;
48-
url?:string;
49-
user?:string;
50-
password?:string;
51-
responseType?:string;
52-
headers?:any;
53-
customRequestInitializer?:(req:any)=>void;
54-
data?:any;
55-
}
56-
57-
export declare function xhr(options:IXHROptions):TPromise<XMLHttpRequest>;
5846
export declare function decoratePromise(promise:Promise, successCallback?:ValueCallback, errorCallback?:ErrorCallback):Promise;
5947
export declare function decoratePromise<T>(promise:TPromise<T>, successCallback?:TValueCallback<T>, errorCallback?:ErrorCallback):TPromise<T>;
6048

src/vs/platform/request/common/baseRequestService.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
'use strict';
66

77
import URI from 'vs/base/common/uri';
8-
import {TPromise, xhr, IXHROptions} from 'vs/base/common/winjs.base';
8+
import {TPromise} from 'vs/base/common/winjs.base';
9+
import {xhr, IXHROptions} from 'vs/base/common/network';
910
import strings = require('vs/base/common/strings');
1011
import Timer = require('vs/base/common/timer');
1112
import Async = require('vs/base/common/async');

src/vs/platform/request/node/nodeRequestService.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66
'use strict';
77

8-
import { TPromise, xhr } from 'vs/base/common/winjs.base';
8+
import { TPromise } from 'vs/base/common/winjs.base';
9+
import { xhr } from 'vs/base/common/network';
910
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
1011
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1112
import { IRequestService } from 'vs/platform/request/common/request';

src/vs/workbench/services/request/node/requestService.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66
'use strict';
77

8-
import { TPromise, Promise, xhr } from 'vs/base/common/winjs.base';
8+
import { TPromise, Promise } from 'vs/base/common/winjs.base';
9+
import { xhr } from 'vs/base/common/network';
910
import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry';
1011
import strings = require('vs/base/common/strings');
1112
import nls = require('vs/nls');

0 commit comments

Comments
 (0)