pm2/lib/Interactor/HttpRequest.js
2017-01-22 21:27:56 +01:00

72 lines
1.5 KiB
JavaScript

/**
* Copyright 2013 the PM2 project authors. All rights reserved.
* Use of this source code is governed by a license that
* can be found in the LICENSE file.
*/
var http = require('http');
var https = require('https');
var debug = require('debug')('interface:http');
var HttpRequest = module.exports = {};
HttpRequest.post = function(opts, cb) {
if (!(opts.port && opts.data && opts.url))
return cb({msg : 'missing parameters', port : opts.port, data : opts.data, url : opts.url});
var port = 0;
var options = {
hostname : opts.url,
path : '/api/node/verifyPM2',
method : 'POST',
port : opts.port,
rejectUnauthorized: false,
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(JSON.stringify(opts.data))
}
};
var client = (opts.port == 443) ? https : http;
var req = client.request(options, function(res){
var dt = '';
res.on('data', function (chunk) {
dt += chunk;
});
res.on('end',function(){
try {
cb(null, JSON.parse(dt));
} catch(e) {
cb(e);
}
});
res.on('error', function(e){
cb(e);
});
});
req.on('socket', function (socket) {
/**
* Configure request timeout
*/
socket.setTimeout(7000);
socket.on('timeout', function() {
debug('Connection timeout when retrieveing PM2 metadata', options);
req.abort();
});
});
req.on('error', function(e) {
cb(e);
});
req.write(JSON.stringify(opts.data));
req.end();
};