genericParseResponseAsList<DataTypeGeneric extends Jsonable<Object>?> method

Future<CloudflareHTTPResponse<List<DataTypeGeneric>>> genericParseResponseAsList<DataTypeGeneric extends Jsonable<Object>?>(
  1. Future futureResponse, {
  2. DataTypeGeneric? dataType,
  3. bool parseCloudflareResponse = true,
})
inherited

Implementation

Future<CloudflareHTTPResponse<List<DataTypeGeneric>>>
    genericParseResponseAsList<DataTypeGeneric extends Jsonable?>(
        Future futureResponse,
        {DataTypeGeneric? dataType,
        bool parseCloudflareResponse = true}) async {
  CloudflareHTTPResponse response = await getSaveResponse(futureResponse,
      parseCloudflareResponse: parseCloudflareResponse);
  try {
    List<DataTypeGeneric>? dataList;
    dynamic body = response.body;
    if (response.body is CloudflareResponse) {
      body = response.body?.result;
      Pagination? pagination =
          (response.body as CloudflareResponse).paginationInfo;
      if (pagination != null) {
        response.base.headers.addAll({
          Pagination.countHeader: '${pagination.count}',
          Pagination.totalCountHeader: '${pagination.totalCount}',
        });
      }
    }

    if (body is Map) {
      for (dynamic value in body.values) {
        if (value is List<dynamic>) {
          body = value;
          break;
        }
      }
    }

    if (body is List<DataTypeGeneric>) {
      dataList = body;
    } else if (dataType is Jsonable) {
      if (body is List<dynamic>) {
        dataList = dataType.fromJsonList(body) as List<DataTypeGeneric>?;
      } else if (body is String) {
        dataList = dataType.fromJsonString(body) as List<DataTypeGeneric>?;
      }
    }
    return CloudflareHTTPResponse<List<DataTypeGeneric>>(
        response.base, dataList,
        error: response.error);
  } catch (e) {
    String message = e.toString();
    print(e);
    return CloudflareHTTPResponse<List<DataTypeGeneric>>(
        http.Response(
          response.body?.toString() ?? '',
          Jsonable.jsonParserError,
          headers: response.base.headers,
          isRedirect: response.base.isRedirect,
          persistentConnection: response.base.persistentConnection,
          reasonPhrase: response.base.reasonPhrase,
          request: response.base.request,
        ),
        null,
        error: message);
  }
}