bodyFieldAllowedValues<B extends Body> function

Middleware bodyFieldAllowedValues<B extends Body>(
  1. String fieldName,
  2. List<String> allowedValues
)

bodyFieldAllowedValues check if the fieldName value is allowed base on allowedValues if check failed return BadRequest response

Implementation

Middleware bodyFieldAllowedValues<B extends Body>(
    String fieldName, List<String> allowedValues) {
  return (handler) {
    return (request) {
      Response? checkItem(Map<String, dynamic> item) {
        final value = item[fieldName] as String;
        if (!allowedValues.contains(value)) {
          final bodyResponse = BadRequest(
            'about:blank',
            'Not allowed value',
            'The value \'$value\' is not allowed, allowed values are: \'${allowedValues.join('\', \'')}\'',
            400,
            request.requestedUri.path,
            field: fieldName,
          );
          return generateResponse(request, bodyResponse);
        }
        return null;
      }

      final body = request.get<B>();
      final response = _checkData(body.data, checkItem);
      if (response != null) {
        return response;
      }
      return handler(request);
    };
  };
}