validateData method

Future<Map<String, dynamic>> validateData(
  1. Map<String, dynamic> data,
  2. Map<String, dynamic> rules
)

Validates specific input data against rules.

Implementation

Future<Map<String, dynamic>> validateData(
  Map<String, dynamic> data,
  Map<String, dynamic> rules,
) async {
  // If no files are provided in data, try to get them from the body parser
  final validationData = Map<String, dynamic>.from(data);
  if (_bodyParser.files != null && !validationData.containsKey('files')) {
    validationData.addAll(_bodyParser.files as Map<String, dynamic>);
  }

  final validator = InputValidator(validationData, rules);

  if (!await validator.passes()) {
    throw ValidationException(validator.errors);
  }

  // Return only the validated data that are in the rules
  return {
    for (var key in rules.keys)
      if (validationData.containsKey(key)) key: validationData[key],
  };
}