required method

Future<T> required()

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;
}