in membership-attribute-service/app/services/MobileSubscriptionService.scala [29:56]
override def getSubscriptionStatusForUser(
identityId: String,
)(implicit logPrefix: LogPrefix): Future[Either[String, Option[MobileSubscriptionStatus]]] = {
val response = wsClient
.url(s"$subscriptionURL/user/subscriptions/$identityId")
.withHttpHeaders("Authorization" -> s"Bearer $mobileSubscriptionApiKey")
.get()
response.map { resp =>
if (resp.status != 200) {
Left(s"Unable to fetch the mobile subscription status for $identityId, got HTTP ${resp.status} ${resp.statusText}")
} else {
val parsedSubs = (resp.json \ "subscriptions")
.validate[List[MobileSubscriptionStatus]]
parsedSubs match {
case JsError(errors) => Left(s"Unable to parse mobile subscription response: $errors")
case JsSuccess(subs, _) =>
logger.info(s"Successfully retrieved ${subs.size} mobile subscriptions for $identityId")
val mostRecentValidSub = subs.filter(_.valid).sortBy(_.to).lastOption
val mostRecentInvalidSub = subs.filterNot(_.valid).sortBy(_.to).lastOption
val result = mostRecentValidSub.orElse(mostRecentInvalidSub)
logger.info(s"Mobile subscription for $identityId is $result")
Right(result)
}
}
}
}