def paginateFold[R M)()

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)
  }