config/validator: add some validation methods.
This commit is contained in:
parent
677d85de1c
commit
af0ab46f21
@ -284,17 +284,88 @@ Config.prototype.num = function num(key, fallback) {
|
|||||||
|
|
||||||
if (typeof value !== 'string') {
|
if (typeof value !== 'string') {
|
||||||
if (typeof value !== 'number')
|
if (typeof value !== 'number')
|
||||||
throw new Error(key + ' must be a string.');
|
throw new Error(key + ' must be a positive integer.');
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!/^\d+$/.test(value))
|
if (!/^\d+$/.test(value))
|
||||||
throw new Error(key + ' must be a number.');
|
throw new Error(key + ' must be a positive integer.');
|
||||||
|
|
||||||
value = parseInt(value, 10);
|
value = parseInt(value, 10);
|
||||||
|
|
||||||
if (!isFinite(value))
|
if (!isFinite(value))
|
||||||
throw new Error(key + ' must be a number.');
|
throw new Error(key + ' must be a positive integer.');
|
||||||
|
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a config option (as a float).
|
||||||
|
* @param {String} key
|
||||||
|
* @param {Object?} fallback
|
||||||
|
* @returns {Number|null}
|
||||||
|
*/
|
||||||
|
|
||||||
|
Config.prototype.flt = function flt(key, fallback) {
|
||||||
|
var value = this.get(key);
|
||||||
|
|
||||||
|
if (fallback === undefined)
|
||||||
|
fallback = null;
|
||||||
|
|
||||||
|
if (value === null)
|
||||||
|
return fallback;
|
||||||
|
|
||||||
|
if (typeof value !== 'string') {
|
||||||
|
if (typeof value !== 'number')
|
||||||
|
throw new Error(key + ' must be a float.');
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/^\d*(?:\.\d*)?$/.test(value))
|
||||||
|
throw new Error(key + ' must be a float.');
|
||||||
|
|
||||||
|
value = parseFloat(value);
|
||||||
|
|
||||||
|
if (!isFinite(value))
|
||||||
|
throw new Error(key + ' must be a float.');
|
||||||
|
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a value (as a satoshi number or btc string).
|
||||||
|
* @param {String} key
|
||||||
|
* @param {Object?} fallback
|
||||||
|
* @returns {Number|null}
|
||||||
|
*/
|
||||||
|
|
||||||
|
Config.prototype.amt = function amt(key, fallback) {
|
||||||
|
var value = this.get(key);
|
||||||
|
|
||||||
|
if (fallback === undefined)
|
||||||
|
fallback = null;
|
||||||
|
|
||||||
|
if (value === null)
|
||||||
|
return fallback;
|
||||||
|
|
||||||
|
if (typeof value !== 'string') {
|
||||||
|
if (typeof value !== 'number')
|
||||||
|
throw new Error(key + ' must be an amount.');
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/^\d+(\.\d{0,8})?$/.test(value))
|
||||||
|
throw new Error(key + ' must be an amount.');
|
||||||
|
|
||||||
|
value = parseFloat(value);
|
||||||
|
|
||||||
|
if (!isFinite(value))
|
||||||
|
throw new Error(key + ' must be an amount.');
|
||||||
|
|
||||||
|
value *= 1e8;
|
||||||
|
|
||||||
|
if (value % 1 !== 0 || value < 0 || value > 0x1fffffffffffff)
|
||||||
|
throw new Error(key + ' must be an amount (uint64).');
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -153,6 +153,39 @@ Validator.prototype.num = function num(key, fallback) {
|
|||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a value (as a number).
|
||||||
|
* @param {String} key
|
||||||
|
* @param {Object?} fallback
|
||||||
|
* @returns {Number|null}
|
||||||
|
*/
|
||||||
|
|
||||||
|
Validator.prototype.flt = function flt(key, fallback) {
|
||||||
|
var value = this.get(key);
|
||||||
|
|
||||||
|
if (fallback === undefined)
|
||||||
|
fallback = null;
|
||||||
|
|
||||||
|
if (value === null)
|
||||||
|
return fallback;
|
||||||
|
|
||||||
|
if (typeof value !== 'string') {
|
||||||
|
if (typeof value !== 'number')
|
||||||
|
throw new ValidationError(fmt(key) + ' must be a float.');
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/^\d*(?:\.\d*)?$/.test(value))
|
||||||
|
throw new ValidationError(fmt(key) + ' must be a float.');
|
||||||
|
|
||||||
|
value = parseFloat(value);
|
||||||
|
|
||||||
|
if (!isFinite(value))
|
||||||
|
throw new ValidationError(fmt(key) + ' must be a float.');
|
||||||
|
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a value (as a uint32).
|
* Get a value (as a uint32).
|
||||||
* @param {String} key
|
* @param {String} key
|
||||||
@ -259,22 +292,22 @@ Validator.prototype.amt = function amt(key, fallback) {
|
|||||||
|
|
||||||
if (typeof value !== 'string') {
|
if (typeof value !== 'string') {
|
||||||
if (typeof value !== 'number')
|
if (typeof value !== 'number')
|
||||||
throw new ValidationError(fmt(key) + ' must be a number.');
|
throw new ValidationError(fmt(key) + ' must be an amount.');
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!/^\d+(\.\d{0,8})?$/.test(value))
|
if (!/^\d+(\.\d{0,8})?$/.test(value))
|
||||||
throw new ValidationError(fmt(key) + ' must be a number.');
|
throw new ValidationError(fmt(key) + ' must be an amount.');
|
||||||
|
|
||||||
value = parseFloat(value);
|
value = parseFloat(value);
|
||||||
|
|
||||||
if (!isFinite(value))
|
if (!isFinite(value))
|
||||||
throw new ValidationError(fmt(key) + ' must be a number.');
|
throw new ValidationError(fmt(key) + ' must be an amount.');
|
||||||
|
|
||||||
value *= 1e8;
|
value *= 1e8;
|
||||||
|
|
||||||
if (value % 1 !== 0 || value < 0 || value > 0x1fffffffffffff)
|
if (value % 1 !== 0 || value < 0 || value > 0x1fffffffffffff)
|
||||||
throw new ValidationError(fmt(key) + ' must be a uint64.');
|
throw new ValidationError(fmt(key) + ' must be an amount (uint64).');
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
@ -298,7 +331,7 @@ Validator.prototype.btc = function btc(key, fallback) {
|
|||||||
value *= 1e8;
|
value *= 1e8;
|
||||||
|
|
||||||
if (value % 1 !== 0 || value < 0 || value > 0x1fffffffffffff)
|
if (value % 1 !== 0 || value < 0 || value > 0x1fffffffffffff)
|
||||||
throw new ValidationError(fmt(key) + ' must be a uint64.');
|
throw new ValidationError(fmt(key) + ' must be a btc float (uint64).');
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user