getContinuations function

Future<List> getContinuations(
  1. JsonMap results,
  2. String continuationType,
  3. int? limit,
  4. RequestFuncType requestFunc,
  5. ParseFuncType parseFunc, {
  6. String ctokenPath = '',
  7. String? additionalParams,
})

Returns list of parsed continuation results.

  • results Result List from request data.
  • continuationType Type of continuation, determines which subkey will be used to navigate the continuation return data.
  • limit Determines minimum of how many items to retrieve in total. null to retrieve all items until no more continuations are returned.
  • requestFunc The request function to use to get the continuations.
  • parseFunc The parse function to apply on the returned continuations.
  • ctokenPath Rarely used specifier applied to retrieve the ctoken ("next<ctoken_path>ContinuationData"). (Default: empty String).
  • additionalParams Optional additional params to pass to the requestFunc. (Default: use getContinuationParams).

Implementation

Future<List> getContinuations(
  JsonMap results,
  String continuationType,
  int? limit,
  RequestFuncType requestFunc,
  ParseFuncType parseFunc, {
  String ctokenPath = '',
  String? additionalParams,
}) async {
  final List items = [];
  JsonMap realResults = results;

  while (realResults.containsKey('continuations') &&
      (limit == null || items.length < limit)) {
    final params =
        additionalParams ?? getContinuationParams(realResults, ctokenPath);
    final JsonMap response = await requestFunc(params);
    if (response.containsKey('continuationContents') &&
        (response['continuationContents'] as JsonMap).containsKey(
          continuationType,
        )) {
      realResults =
          (response['continuationContents'] as JsonMap)[continuationType]
              as JsonMap;
    } else {
      break;
    }

    final contents = await getContinuationContents(realResults, parseFunc);
    if (contents.isEmpty) break;

    items.addAll(contents);
  }

  return items;
}