in modules/core/src/main/scala/org/scalasteward/core/forge/gitea/GiteaApiAlg.scala [214:246]
override def getRepo(repo: Repo): F[RepoOut] =
client
.get[Repository](url.repos(repo), modify)
.map(repoOut(_))
override def listPullRequests(
repo: Repo,
head: String,
base: Branch
): F[List[PullRequestOut]] = {
def go(page: Int) =
client
.get[Vector[PullRequestResp]](
url
.pulls(repo)
.withQueryParam("page", page)
.withQueryParam("limit", PULL_REQUEST_PAGE_SIZE),
modify
)
// basically unfoldEval
def goLoop(page: Int, accu: Vector[PullRequestOut]): F[Vector[PullRequestOut]] =
go(page).flatMap {
case xs if xs.isEmpty => accu.pure[F]
case xs =>
val xs0 =
xs.filter(x => x.head.label == head && x.base.label == base.name)
.map(pullRequestOut)
goLoop(page + 1, accu ++ xs0)
}
goLoop(1, Vector.empty).map(_.toList)
}