getBody<T> method

Future<T> getBody<T>({
  1. TransferBean<T>? bean,
})

Returns decoded body data.

Useful for receiving transfer objects. Allowed types are: String, Map<String, dynamic>, List<dynamic>, Uint8List, Stream<Uint8List>, dynamic.

If T is dynamic, the body data will be returned as json (Map or List).

Implementation

Future<T> getBody<T>({TransferBean<T>? bean}) async {
  try {
    if (bean != null) {
      return bean.toObject(await getJsonBody());
    } else if (T == String) {
      return await getTextBody() as T;
    } else if (T == Map<String, dynamic>) {
      return await getJsonBody() as T;
    } else if (T == Uint8List) {
      return await getByteBody() as T;
    } else if (T == List<dynamic>) {
      return await getJsonListBody() as T;
    } else if (T == Stream<Uint8List>) {
      return bodyData as T;
    } else if (T == Stream<List<int>>) {
      return bodyData as T;
    } else if (T == dynamic) {
      return jsonDecode(await getTextBody());
    }
  } on CodecException catch (e) {
    throw ApiRequestException.badRequest(e.message);
  } catch (_) {
    throw ApiRequestException.badRequest('Invalid body data.');
  }

  throw ApiError.invalidType(T);
}