X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Fstates%2FAbstractState.java;h=081fbcc9d0140197cfff43867d44f889212e2653;hb=5d962b76adef88663cfa4acc093836c71fe9dd82;hp=afb7dc2e51b92d9edd8079a5920ba2cdc5825116;hpb=6d8a3475d8e56cea63d53d456baef434318223a7;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/states/AbstractState.java b/src/main/java/net/pterodactylus/rhynodge/states/AbstractState.java index afb7dc2..081fbcc 100644 --- a/src/main/java/net/pterodactylus/rhynodge/states/AbstractState.java +++ b/src/main/java/net/pterodactylus/rhynodge/states/AbstractState.java @@ -17,10 +17,18 @@ package net.pterodactylus.rhynodge.states; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import net.pterodactylus.rhynodge.Reaction; import net.pterodactylus.rhynodge.State; +import net.pterodactylus.rhynodge.output.DefaultOutput; +import net.pterodactylus.rhynodge.output.Output; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.google.common.escape.Escaper; +import com.google.common.html.HtmlEscapers; /** * Abstract implementation of a {@link State} that knows about the basic @@ -143,4 +151,29 @@ public abstract class AbstractState implements State { return exception; } + @Nonnull + @Override + public Output output(Reaction reaction) { + return new DefaultOutput(summary(reaction)) + .addText("text/plain", plainText()) + .addText("text/html", htmlText()); + } + + @Nonnull + protected String summary(Reaction reaction) { + return reaction.name(); + } + + @Nonnull + protected abstract String plainText(); + + @Nullable + protected String htmlText() { + //noinspection UnstableApiUsage + return "
" + htmlEscaper.escape(plainText()) + "
"; + } + + @SuppressWarnings("UnstableApiUsage") + private static final Escaper htmlEscaper = HtmlEscapers.htmlEscaper(); + }