in registration/app/registration/controllers/Main.scala [70:93]
private def registerCommon(registration: Registration): Future[Either[NotificationsError, RegistrationResponse]] = {
def validate(topics: Set[Topic]): Future[Set[Topic]] =
topicValidator
.removeInvalid(topics)
.map {
case Right(filteredTopics) =>
logger.debug(s"Successfully validated topics in registration (${registration.deviceToken}), topics valid: [$filteredTopics]")
filteredTopics
case Left(e) =>
logger.error(s"Could not validate topics ${e.topicsQueried} for registration (${registration.deviceToken}), reason: ${e.reason}")
topics
}
def registerWith(registrar: NotificationRegistrar, topics: Set[Topic]) =
registrar
.register(registration.deviceToken, registration.copy(topics = topics))
def logErrors: PartialFunction[Try[Either[ProviderError, RegistrationResponse]], Unit] = {
case Success(Left(v)) => logger.error(s"Failed to register $registration with ${v.providerName}: ${v.reason}")
}
validate(registration.topics).flatMap(registerWith(registrar, _).andThen(logErrors))
}