Move SysInfoError to BoxError

This commit is contained in:
Girish Ramakrishnan
2019-10-22 14:09:44 -07:00
parent a7614cef2e
commit 332f2e7c10
4 changed files with 12 additions and 38 deletions
+1 -27
View File
@@ -1,8 +1,6 @@
'use strict';
exports = module.exports = {
SysInfoError: SysInfoError,
getPublicIp: getPublicIp,
hasIPv6: hasIPv6,
@@ -15,34 +13,10 @@ var assert = require('assert'),
generic = require('./sysinfo/generic.js'),
paths = require('./paths.js'),
scaleway = require('./sysinfo/scaleway.js'),
safe = require('safetydance'),
util = require('util');
function SysInfoError(reason, errorOrMessage) {
assert.strictEqual(typeof reason, 'string');
assert(errorOrMessage instanceof Error || typeof errorOrMessage === 'string' || typeof errorOrMessage === 'undefined');
Error.call(this);
Error.captureStackTrace(this, this.constructor);
this.name = this.constructor.name;
this.reason = reason;
if (typeof errorOrMessage === 'undefined') {
this.message = reason;
} else if (typeof errorOrMessage === 'string') {
this.message = errorOrMessage;
} else {
this.message = 'Internal error';
this.nestedError = errorOrMessage;
}
}
util.inherits(SysInfoError, Error);
SysInfoError.INTERNAL_ERROR = 'Internal Error';
SysInfoError.EXTERNAL_ERROR = 'External Error';
safe = require('safetydance');
let gProvider = null;
function provider() {
if (gProvider) return gProvider;
+3 -3
View File
@@ -5,16 +5,16 @@ exports = module.exports = {
};
var assert = require('assert'),
BoxError = require('../boxerror.js'),
superagent = require('superagent'),
SysInfoError = require('../sysinfo.js').SysInfoError,
util = require('util');
function getPublicIp(callback) {
assert.strictEqual(typeof callback, 'function');
superagent.get('http://169.254.169.254/latest/meta-data/public-ipv4').timeout(30 * 1000).end(function (error, result) {
if (error) return callback(new SysInfoError(SysInfoError.INTERNAL_ERROR, error.status ? 'Request failed: ' + error.status : 'Network failure'));
if (result.statusCode !== 200) return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body)));
if (error) return callback(new BoxError(BoxError.INTERNAL_ERROR, error.status ? 'Request failed: ' + error.status : 'Network failure'));
if (result.statusCode !== 200) return callback(new BoxError(BoxError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body)));
callback(null, result.text);
});
+4 -4
View File
@@ -6,8 +6,8 @@ exports = module.exports = {
var assert = require('assert'),
async = require('async'),
superagent = require('superagent'),
SysInfoError = require('../sysinfo.js').SysInfoError;
BoxError = require('../boxerror.js'),
superagent = require('superagent');
function getPublicIp(callback) {
assert.strictEqual(typeof callback, 'function');
@@ -18,11 +18,11 @@ function getPublicIp(callback) {
superagent.get('https://api.cloudron.io/api/v1/helper/public_ip').timeout(30 * 1000).end(function (error, result) {
if (error || result.statusCode !== 200) {
console.error('Error getting IP', error);
return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, 'Unable to detect IP. API server unreachable'));
return callback(new BoxError(BoxError.EXTERNAL_ERROR, 'Unable to detect IP. API server unreachable'));
}
if (!result.body && !result.body.ip) {
console.error('Unexpected answer. No "ip" found in response body.', result.body);
return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, 'Unable to detect IP. No IP found in response'));
return callback(new BoxError(BoxError.EXTERNAL_ERROR, 'Unable to detect IP. No IP found in response'));
}
callback(null, result.body.ip);
+4 -4
View File
@@ -5,19 +5,19 @@ exports = module.exports = {
};
var assert = require('assert'),
BoxError = require('../boxerror.js'),
superagent = require('superagent'),
SysInfoError = require('../sysinfo.js').SysInfoError,
util = require('util');
function getPublicIp(callback) {
assert.strictEqual(typeof callback, 'function');
superagent.get('http://169.254.42.42/conf').timeout(30 * 1000).end(function (error, result) {
if (error) return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, error.status ? 'Request failed: ' + error.status : 'Network failure'));
if (result.statusCode !== 200) return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body)));
if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.status ? 'Request failed: ' + error.status : 'Network failure'));
if (result.statusCode !== 200) return callback(new BoxError(BoxError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body)));
var kv = result.text.split('\n').filter(function (line) { return line.startsWith('PUBLIC_IP_ADDRESS='); });
if (kv.length !== 1) return callback(new SysInfoError(SysInfoError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body)));
if (kv.length !== 1) return callback(new BoxError(BoxError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body)));
callback(null, kv[0].split('=')[1]);
});