genericParseResponseAsList<DataTypeGeneric extends Jsonable<Object>?> method

Future<GoogleHTTPResponse<List<DataTypeGeneric>>> genericParseResponseAsList<DataTypeGeneric extends Jsonable<Object>?>(
  1. Future futureResponse, {
  2. DataTypeGeneric? dataType,
})

Implementation

Future<GoogleHTTPResponse<List<DataTypeGeneric>>>
    genericParseResponseAsList<DataTypeGeneric extends Jsonable?>(
        Future futureResponse,
        {DataTypeGeneric? dataType}) async {
  GoogleHTTPResponse response = await getSaveResponse(futureResponse);
  try {
    List<DataTypeGeneric>? dataList;
    dynamic body = response.body;

    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 GoogleHTTPResponse<List<DataTypeGeneric>>(
      response.base,
      dataList,
      error: response.error,
      extraData: response.extraData,
    );
  } catch (e) {
    String message = e.toString();
    print(e);
    return GoogleHTTPResponse<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: GoogleErrorResponse(
        error: ErrorInfo(
          message: message,
        ),
      ),
    );
  }
}