in lib/binaries/config_source.ts [156:192]
private requestJson(): Promise<any> {
return new Promise<any>((resolve, reject) => {
let options = HttpUtils.initOptions(this.jsonUrl);
options = HttpUtils.optionsHeader(options, 'Host', 'api.github.com');
options = HttpUtils.optionsHeader(options, 'User-Agent', 'request');
let curl = this.getFileName() + ' ' + options.url;
if (HttpUtils.requestOpts.proxy) {
let pathUrl = url.parse(options.url.toString()).path;
let host = url.parse(options.url.toString()).host;
let newFileUrl = url.resolve(HttpUtils.requestOpts.proxy, pathUrl);
curl = this.getFileName() + ' \'' + newFileUrl + '\' -H \'host:' + host + '\'';
}
if (HttpUtils.requestOpts.ignoreSSL) {
curl = 'k ' + curl;
}
logger.info('curl -o' + curl);
let req = request(options);
req.on('response', response => {
if (response.statusCode === 200) {
let output = '';
response.on('data', (data) => {
output += data;
});
response.on('end', () => {
resolve(output);
});
} else if (response.statusCode == 403 && response.headers['x-ratelimit-remaining'] == '0') {
reject(new Error('Failed to make Github request, rate limit reached.'));
} else {
reject(new Error('response status code is not 200. It was ' + response.statusCode));
}
})
});
}