getContinuations function
- JsonMap results,
- String continuationType,
- int? limit,
- RequestFuncType requestFunc,
- ParseFuncType parseFunc, {
- String ctokenPath = '',
- 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 therequestFunc
. (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;
}