mirror of
https://github.com/Unitech/pm2.git
synced 2025-12-08 20:35:53 +00:00
72 lines
1.5 KiB
JavaScript
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();
|
|
};
|