in app/lib/slack/DeployReporter.scala [29:43]
private def slackHooksFrom(repoLevelDetails: RepoLevelDetails): Option[NonEmptySeq[Url]] =
NonEmptySeq.fromSeq(repoLevelDetails.hooks.filter(_.hostOption.exists(_.value == "hooks.slack.com")))
private def report(checkpointChangeSummary: PullRequestCheckpointsStateChangeSummary, slackHooks: NonEmptySeq[Url]): Option[Future[Unit]] = {
val pr = checkpointChangeSummary.prCheckpointDetails.pr
for (changedSnapshots <- checkpointChangeSummary.changedByState.get(Seen)) yield {
val json = messageJsonFor(pr, changedSnapshots)
Future.traverse(slackHooks.toSeq) { hook =>
val responseF = ws.url(hook.toString).post(json)
responseF.onComplete { r => logger.debug(s"Response from Slack: ${r.map(_.body)}") }
responseF
}.map(_ => ())
}
}