-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathrequest.js
More file actions
75 lines (69 loc) · 2.06 KB
/
Copy pathrequest.js
File metadata and controls
75 lines (69 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
'use strict';
class Request {
constructor(requestMod, $window, electron ) {
this.request = requestMod;
this.electron = electron;
this.userAgentString = $window.navigator.userAgent;
if(process.env.DSI_TEST_AGENT && this.userAgentString) {
this.userAgentString = $window.navigator.userAgent.replace("Installer", "TestInstaller");
}
}
get(req) {
return new Promise((resolve)=> {
if(this.electron) {
this.electron.remote.getCurrentWindow().webContents.session.resolveProxy("https://google.com", function(p){
//parse PROXY XXX.XXX.XXX.XXX:XXXX;
let proxy = p.replace(/(PROXY|DIRECT)/g,'').replace(/;/g,'').replace(/ /g,'');
resolve(proxy.length > 0 ? `http://${proxy}`: undefined);
console.log(proxy);
});
} else {
resolve();
}
}).then((proxy)=> {
return new Promise((resolve, reject)=>{
let options;
if (req instanceof Object) {
options = req;
} else {
options = {
url: req
};
}
if(options.headers === undefined) {
options.headers = {};
}
if(proxy) {
options.proxy = proxy;
}
options.headers['User-Agent'] = this.userAgentString;
this.request(options, (error, response, data) => {
if (error) {
reject(error);
} else if(response.statusCode == 200) {
resolve({
status: response.statusCode,
data: JSON.parse(data)
});
} else if (response.statusCode == 401) {
resolve({
status: response.statusCode,
data: data
});
} else {
resolve({
status: response.statusCode
});
}
});
});
});
}
static factory(requestMod, $window, electron) {
return function(req) {
return new Request(requestMod, $window, electron).get(req);
};
}
}
Request.factory.$inject=['requestMod', '$window', 'electron'];
export default Request;