def resolve()

in src/main/scala/com/gu/http/redirect/resolver/UrlResolver.scala [36:43]


  def resolve(uri: URI): Future[Resolution] = resolveFollowing(RedirectPath(uri))

  private def resolveFollowing(redirectPath: RedirectPath): Future[Resolution] =
    if (redirectPath.numRedirects >= maxRedirects || redirectPath.isLoop) Future.successful(Unresolved(redirectPath))
    else cache.get(redirectPath.latestUri).flatMap {
      case Redirect(subsequentUri) => resolveFollowing(redirectPath.adding(subsequentUri))
      case conclusion: Conclusion => Future.successful(Resolved(redirectPath, conclusion))
    }