package gov.nysenate.openleg.service.notification.dispatch;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import gov.nysenate.openleg.model.notification.NotificationDigest;
import gov.nysenate.openleg.model.notification.NotificationTarget;
import gov.nysenate.openleg.model.slack.SlackAttachment;
import gov.nysenate.openleg.model.slack.SlackField;
import gov.nysenate.openleg.model.slack.SlackMessage;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Set;
@Service
public class SlackNotificationDigestSender extends BaseSlackNotificationSender implements NotificationDigestSender {
private static final ImmutableSet<NotificationTarget> targets = ImmutableSet.of(NotificationTarget.SLACK);
private static final String digestColor = "#0099FF";
private static final String digestIcon = ":piggy:";
@Override
public Set<NotificationTarget> getTargets() {
return targets;
}
@Override
public void sendDigest(NotificationDigest digest) {
String digestText = NotificationDigestFormatter.getDigestText(digest, this::getDisplayUrl);
SlackMessage message = new SlackMessage()
.addAttachments(new SlackAttachment()
.setTitle(NotificationDigestFormatter.getSummary(digest))
.setTitleLink(getDigestUrl(digest))
.setText(digestText)
.setFallback(truncateDigest(digest, digestText))
.setColor(digestColor)
.setFields(getFields(digest)))
.setText("")
.setIcon(digestIcon);
slackChatService.sendMessage(message,
Collections.singleton(parseAddress(digest.getAddress())));
}
/** --- Internal Methods --- */
private ArrayList<SlackField> getFields(NotificationDigest digest) {
return Lists.newArrayList(
new SlackField("Type", digest.getType().toString()),
new SlackField("From", digest.getStartDateTime().toString()),
new SlackField("To", digest.getEndDateTime().toString()));
}
}