epub-full-text-search
Version:
56 lines (42 loc) • 1.96 kB
JavaScript
;
var _Logger = require('./Logger');
var _Logger2 = _interopRequireDefault(_Logger);
var _url = require('url');
var _url2 = _interopRequireDefault(_url);
var _httpsProxyAgent = require('https-proxy-agent');
var _httpsProxyAgent2 = _interopRequireDefault(_httpsProxyAgent);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var proxy = process.env.http_proxy || 'http://192.168.1.135:8080';
var Helper = {};
Helper.getContent = function (endpoint) {
// from here https://www.tomas-dvorak.cz/posts/nodejs-request-without-dependencies/
return new Promise(function (resolve, reject) {
_Logger2.default.log('info', 'attempting to GET %j', endpoint);
// select http or https module, depending on reqested url
var lib = endpoint.startsWith('https') ? require('https') : require('http');
var options = _url2.default.parse(endpoint);
var agent = new _httpsProxyAgent2.default(proxy);
// options.agent = agent; // uncomment to set proxy settings
var request = lib.get(options, function (response) {
// handle http errors
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page for normalization, status code: ' + response.statusCode));
}
// temporary data holder
var body = [];
// on every content chunk, push it to the data array
response.on('data', function (chunk) {
return body.push(chunk);
});
// we are done, resolve promise with those joined chunks
response.on('end', function () {
return resolve(body.join(''));
});
});
// handle connection errors of the request
request.on('error', function (err) {
return reject(err);
});
});
};
module.exports = Helper;