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