parseRequestBody function

Future parseRequestBody(
  1. HttpRequest request, {
  2. Duration timeout = const Duration(seconds: 360),
})

Implementation

Future<dynamic> parseRequestBody(HttpRequest request,
    {Duration timeout = const Duration(seconds: 360)}) async {
  var bodyType = request.headers.contentType?.mimeType;

  try {
    var bodyBytes = await request.fold<List<int>>(
      <int>[],
      (previousValue, element) => previousValue..addAll(element),
    ).timeout(timeout);

    // Return different values based on the content type of the request body
    switch (bodyType) {
      case 'application/json':
        return parseBodyAsJson(bytes: bodyBytes);

      case 'text/plain':
        return utf8.decode(bodyBytes);

      default:
        return utf8.decode(bodyBytes);
    }
  } on TimeoutException {
    logger.severe("Timed out while trying to read the request body");
  } catch (e) {
    logger.severe(e.toString());
  }
}