From 0a78da5829fcc3de925ae3c29e4cf8562864259f Mon Sep 17 00:00:00 2001 From: "David J. M. Karlsen" Date: Thu, 10 Jan 2019 21:25:15 +0100 Subject: [PATCH] Fix for #38 to be able to avoid --- .../java/me/ramswaroop/jbot/core/slack/Bot.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/jbot/src/main/java/me/ramswaroop/jbot/core/slack/Bot.java b/jbot/src/main/java/me/ramswaroop/jbot/core/slack/Bot.java index fbe00eff..95382fc4 100644 --- a/jbot/src/main/java/me/ramswaroop/jbot/core/slack/Bot.java +++ b/jbot/src/main/java/me/ramswaroop/jbot/core/slack/Bot.java @@ -29,6 +29,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.regex.Matcher; /** @@ -43,6 +44,17 @@ public abstract class Bot extends BaseBot { private static final Logger logger = LoggerFactory.getLogger(Bot.class); private final Object sendMessageLock = new Object(); + private Function messageEncoder = s -> + s.replace("&", "&").replace("<", "<").replace(">", ">"); + + /** + * Encoder of messageText. + * To avoid encoding the identity-function can be applied: Function.identity() + * @param messageEncoder + */ + public void setMessageEncoder(Function messageEncoder) { + this.messageEncoder = messageEncoder; + } /** * Service to access Slack APIs. @@ -288,7 +300,7 @@ private void invokeChainedMethod(WebSocketSession session, Event event) { * @return encoded message */ private String encode(String message) { - return message == null ? null : message.replace("&", "&").replace("<", "<").replace(">", ">"); + return message == null ? null : messageEncoder.apply(message); } private StandardWebSocketClient client() {