override def retrieveForUser()

in mobile-save-for-later/src/main/scala/com/gu/sfl/savedarticles/FetchSavedArticles.scala [30:52]


  override def retrieveForUser(headers: Map[String, String]): Future[Either[SaveForLaterError, SyncedPrefs]] = {
    (for {
      identityHeaders <- getIdentityHeaders(headers)
    } yield {
      identityService.userFromRequest(identityHeaders, List(readSelf)).transformWith{
        case Success(Some(userId)) =>
          logger.debug(s"Got user id ${userId} from identity")
          Future.successful(wrapSavedArticles(userId, savedArticlesPersistence.read(userId)))
        case Success(_) =>
          logger.debug(s"No user found for AccessToken ${identityHeaders.accessToken}")
          Future.successful(Left(new UserNotFoundError("Could not retrieve a user id")))
        case Failure(OktaValidationException(e)) =>
          logger.debug(s"Error retrieving userId from okta oauth token")
          Future.successful(Left(OktaOauthValidationError(e.message, e)))
        case Failure(_) =>
          logger.debug(s"Error retrieving userId for: token: ${identityHeaders.accessToken}")
          Future.successful(Left(new IdentityServiceError("Could not get a response from the id api")))
      }
    }).getOrElse{
      logger.debug(s"Could not retrieve identity headers")
      Future.successful(Left(MissingAccessTokenError("No access token on request")))
    }
  }