parseRequestBody function
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());
}
}