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 !== 'number')
|
||||
throw new Error(key + ' must be a string.');
|
||||
throw new Error(key + ' must be a positive integer.');
|
||||
return 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);
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
@ -153,6 +153,39 @@ Validator.prototype.num = function num(key, fallback) {
|
||||
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).
|
||||
* @param {String} key
|
||||
@ -259,22 +292,22 @@ Validator.prototype.amt = function amt(key, fallback) {
|
||||
|
||||
if (typeof value !== 'string') {
|
||||
if (typeof value !== 'number')
|
||||
throw new ValidationError(fmt(key) + ' must be a number.');
|
||||
throw new ValidationError(fmt(key) + ' must be an amount.');
|
||||
return 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);
|
||||
|
||||
if (!isFinite(value))
|
||||
throw new ValidationError(fmt(key) + ' must be a number.');
|
||||
throw new ValidationError(fmt(key) + ' must be an amount.');
|
||||
|
||||
value *= 1e8;
|
||||
|
||||
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;
|
||||
};
|
||||
@ -298,7 +331,7 @@ Validator.prototype.btc = function btc(key, fallback) {
|
||||
value *= 1e8;
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user