in client/src/main/scala/com.gu.contentapi.client/ContentApiClient.scala [129:144]
def paginateFold[R <: ThriftStruct: Decoder, E, M](query: PaginatedApiQuery[R, E])(m: M)(f: (R, M) => M)(
implicit
context: ExecutionContext
): Future[M] = {
def paginateFoldIn(currentQuery: Option[PaginatedApiQuery[R, E]])(m: M): Future[M] = {
val req = currentQuery.map(getResponse(_)).getOrElse(getResponse(query))
req.flatMap { r: R =>
query.followingQueryGiven(r, Next) match {
case None => Future.successful(f(r, m))
case Some(nextQuery) => paginateFoldIn(Some(nextQuery))(f(r, m))
}
}
}
paginateFoldIn(None)(m)
}