deep-framework
Version:
50 lines (40 loc) • 1.23 kB
JavaScript
var _ = require('underscore');
var http = require('http');
var logger = require('../../logger');
var Plugin = {
getPluginMetadata: function (options, callback) {
var METADATA_TIMEOUT = 1000;
var METADATA_RETRY_TIMEOUT = 250;
var METADATA_RETRIES = 20;
var retries = METADATA_RETRIES;
var getMetadata = function() {
var req = http.request(options, function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
if (_.contains([200, 300], this.statusCode)) {
body = JSON.parse(body);
callback(body);
} else if (retries > 0 && (_.contains([400], this.statusCode)) ){
retries--;
setTimeout(getMetadata, METADATA_RETRY_TIMEOUT);
} else { callback(); }
});
}).on('error', function(err) {
logger.error('Error loading plugin: ', err);
callback();
});
req.on('socket', function (socket) {
socket.on('timeout', function() {
req.abort();
});
socket.setTimeout(METADATA_TIMEOUT);
});
req.end();
};
getMetadata();
}
};
module.exports = Plugin;