private def futureSave()

in mobile-save-for-later/src/main/scala/com/gu/sfl/controller/SaveArticlesController.scala [40:62]


  private def futureSave(triedRequest: Try[SavedArticles], requestHeaders: Map[String, String] ): Future[LambdaResponse] = {
    (for{
      articlestoSave <- Future.fromTry(triedRequest)
      maybeUpdatedArticles <- updateSavedArticles.save(requestHeaders, articlestoSave)
    }yield {
      maybeUpdatedArticles
    }).map {
      case Right(syncedPrefs) =>
        logger.info("Got articles back from db")
        okSavedArticlesResponse(syncedPrefs)
      case Left(error) =>
        logger.error(s"Error saving articles: ${error.message}")
        processErrorResponse(error) {
          case i: IdentityServiceError =>  identityErrorResponse
          case m: MissingAccessTokenError => missingAccessTokenResponse
          case u: UserNotFoundError => missingUserResponse
          case OktaOauthValidationError(e, InvalidOrExpiredToken) => oktaOauthError(e, StatusCodes.unauthorized)
          case OktaOauthValidationError(e, MissingRequiredClaim(_)) => oktaOauthError(e, StatusCodes.badRequest)
          case OktaOauthValidationError(e, MissingRequiredScope(_)) => oktaOauthError(e, StatusCodes.forbidden)
          case OktaOauthValidationError(e, _) => oktaOauthError(e, StatusCodes.unauthorized)
        }
    }
  }