readFormData function

Future<FormData> readFormData(
  1. dynamic event
)

Implementation

Future<FormData> readFormData(dynamic event) async {
  final HttpRequest request = event.node["value"];
  final contentType = request.headers.contentType;
  final boundary = contentType?.parameters['boundary'];
  var formData = FormData();

  if (contentType == null) {
    throw CreateError(message: "Content type header not set");
  }

  if (contentType.mimeType.isEmpty) {
    logger.warning("NO formdata fields in request body");
    throw CreateError(message: "No formdata fields found");
  }

  bool hasBoundary = boundary != null;

  if (contentType.mimeType == 'multipart/form-data') {
    return hasBoundary
        ? await _handleMultipartFormdata(request, boundary, formData)
        : throw CreateError(message: "No boundary found");
  }

  if (contentType.mimeType == 'application/x-www-form-urlencoded') {
    await _handleUrlEncodedFormData(request, formData);
    return formData;
  }

  throw Exception('Unsupported content type: ${contentType.mimeType}');
}