required method
An InputVariableValidator is a class that validates an input variable.
It is used to validate the input variables of a request. {@endtemplate}
Implementation
Future<T> required() async {
dynamic value;
try {
value = await _parseParameter();
} catch (_) {
throw AlfredException(400, {
'message': 'Empty body',
});
}
if (value == null || (value is String && value.isEmpty)) {
_addError(value, ErrorType.parameterNotFound);
return _createInstanceOf();
} else if ((T == num || T == int || T == double) && value is String) {
final asNum = num.tryParse(value);
if (asNum == null) {
_addError(value, ErrorType.parameterTypeMismatch);
return _createInstanceOf();
}
return asNum as T;
} else if (value is! T) {
_addError(value, ErrorType.parameterTypeMismatch);
return _createInstanceOf();
}
if (value is String && regExp != null) {
final isValid = regExp?.hasMatch(value) ?? true;
if (!isValid) {
_addError(value, ErrorType.customValidationFailed);
return _createInstanceOf();
}
}
return value;
}