2015-12-30 03:36:14 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var PromiseA = require('bluebird');
|
|
|
|
var https = PromiseA.promisifyAll(require('https'));
|
|
|
|
var http = PromiseA.promisifyAll(require('http'));
|
|
|
|
|
|
|
|
function requestAsync(opts) {
|
|
|
|
return new PromiseA(function (resolve, reject) {
|
|
|
|
var httpr = (false === opts.secure) ? http : https;
|
|
|
|
|
2015-12-30 21:40:52 +00:00
|
|
|
if (opts.debug) {
|
|
|
|
console.log('[HP] requestAsync opts');
|
|
|
|
console.log(opts);
|
|
|
|
}
|
2015-12-30 08:22:04 +00:00
|
|
|
|
2015-12-30 03:36:14 +00:00
|
|
|
var req = httpr.request(opts, function (res) {
|
|
|
|
var data = '';
|
|
|
|
|
|
|
|
res.on('error', function (err) {
|
|
|
|
if (opts.debug) {
|
|
|
|
console.error('[Error] HP: bad request:');
|
|
|
|
console.error(err);
|
|
|
|
}
|
|
|
|
reject(err);
|
|
|
|
});
|
|
|
|
res.on('data', function (chunk) {
|
2015-12-30 21:40:52 +00:00
|
|
|
clearTimeout(req.__timtok);
|
|
|
|
|
2015-12-30 03:36:14 +00:00
|
|
|
if (opts.debug > 2) {
|
|
|
|
console.log('HP: request chunk:');
|
|
|
|
console.log(chunk);
|
|
|
|
}
|
2015-12-30 21:40:52 +00:00
|
|
|
|
2015-12-30 03:36:14 +00:00
|
|
|
data += chunk.toString('utf8');
|
|
|
|
});
|
|
|
|
res.on('end', function () {
|
|
|
|
if (opts.debug > 2) {
|
|
|
|
console.log('HP: request complete:');
|
|
|
|
console.log(data);
|
|
|
|
}
|
|
|
|
resolve(data);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
req.on('error', reject);
|
2015-12-30 21:40:52 +00:00
|
|
|
req.setTimeout(3 * 1000);
|
|
|
|
req.on('socket', function (socket) {
|
|
|
|
req.__timtok = setTimeout(function () {
|
|
|
|
req.abort();
|
|
|
|
}, 3 * 1000);
|
|
|
|
socket.setTimeout(3 * 1000);
|
|
|
|
});
|
2015-12-30 03:36:14 +00:00
|
|
|
req.end();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = requestAsync;
|