def anyPaymentDetails()

in membership-attribute-service/app/controllers/AccountController.scala [184:209]


  def anyPaymentDetails(filter: OptionalSubscriptionsFilter, metricName: String): Action[AnyContent] =
    AuthorizeForRecentLoginAndScopes(Return401IfNotSignedInRecently, requiredScopes = List(completeReadSelf)).async { request =>
      import request.logPrefix
      metrics.measureDuration(metricName) {
        val user = request.user
        val userId = user.identityId

        logger.info(s"Attempting to retrieve payment details for identity user: $userId")

        for {
          catalog <- request.touchpoint.futureCatalog
          result <- paymentDetails(userId, filter, request.touchpoint).toEither
        } yield result match {
          case Right(subscriptionList) =>
            logger.info(s"Successfully retrieved payment details result for identity user: $userId")
            val productsResponseWrites = new ProductsResponseWrites(catalog)
            val response = productsResponseWrites.from(user, subscriptionList)
            import productsResponseWrites.writes
            Ok(Json.toJson(response))
          case Left(message) =>
            logger.warn(s"Unable to retrieve payment details result for identity user $userId due to $message")
            InternalServerError("Failed to retrieve payment details due to an internal error")
        }

      }
    }