diff --git a/sources/src/main/java/com/ullink/slack/simpleslackapi/SlackPreparedMessage.java b/sources/src/main/java/com/ullink/slack/simpleslackapi/SlackPreparedMessage.java index 288e11c0..b08b3773 100644 --- a/sources/src/main/java/com/ullink/slack/simpleslackapi/SlackPreparedMessage.java +++ b/sources/src/main/java/com/ullink/slack/simpleslackapi/SlackPreparedMessage.java @@ -7,18 +7,20 @@ import java.util.Objects; public class SlackPreparedMessage { + private String message; private boolean unfurl; private boolean linkNames; - private SlackAttachment[] attachments; + private List attachments; private String threadTimestamp; private boolean replyBroadcast; + private SlackPreparedMessage(String message, boolean unfurl, boolean linkNames, SlackAttachment[] attachments, String threadTimestamp, boolean replyBroadcast) { this.message = message; this.unfurl = unfurl; this.linkNames = linkNames; - this.attachments = attachments; + this.attachments = Arrays.asList(attachments); this.threadTimestamp = threadTimestamp; this.replyBroadcast = replyBroadcast; } @@ -40,7 +42,7 @@ public boolean isLinkNames() { } public SlackAttachment[] getAttachments() { - return attachments; + return attachments.toArray(new SlackAttachment[]{}); } public String getThreadTimestamp() { @@ -125,7 +127,7 @@ public String toString() { return "SlackPreparedMessage{" + "message='" + message + '\'' + ", unfurl=" + unfurl + - ", attachments=" + Arrays.toString(attachments) + + ", attachments=" + attachments + '}'; } diff --git a/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/ChannelHistoryModuleImpl.java b/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/ChannelHistoryModuleImpl.java index 1b451dfc..042f556d 100644 --- a/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/ChannelHistoryModuleImpl.java +++ b/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/ChannelHistoryModuleImpl.java @@ -159,7 +159,7 @@ public List fetchUpdatingHistoryOfChannel(String channelId, return messages; } - public class ChannelHistoryReactionAddedListener implements ReactionAddedListener { + public static class ChannelHistoryReactionAddedListener implements ReactionAddedListener { List messages = new ArrayList<>(); @@ -174,7 +174,7 @@ public void onEvent(ReactionAdded event, SlackSession session) { for (String reaction : message.getReactions().keySet()) { if (emojiName.equals(reaction)) { int count = message.getReactions().get(emojiName); - message.getReactions().put(emojiName, count++); + message.getReactions().put(emojiName, ++count); return; } } @@ -183,7 +183,7 @@ public void onEvent(ReactionAdded event, SlackSession session) { } }; - public class ChannelHistoryReactionRemovedListener implements ReactionRemovedListener { + public static class ChannelHistoryReactionRemovedListener implements ReactionRemovedListener { List messages = new ArrayList<>(); @@ -210,7 +210,7 @@ public void onEvent(ReactionRemoved event, SlackSession session) { } } - public class ChannelHistoryMessagePostedListener implements SlackMessagePostedListener { + public static class ChannelHistoryMessagePostedListener implements SlackMessagePostedListener { List messages = new ArrayList<>(); diff --git a/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackJSONMessageParser.java b/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackJSONMessageParser.java index 7db6526f..3bbf84c8 100644 --- a/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackJSONMessageParser.java +++ b/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackJSONMessageParser.java @@ -12,7 +12,11 @@ import java.util.HashMap; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + class SlackJSONMessageParser { + private static final Logger LOGGER = LoggerFactory.getLogger(SlackJSONMessageParser.class); public static enum SlackMessageSubType { @@ -270,6 +274,7 @@ private static void parseSlackFileFromRaw(JsonObject rawFile, SlackFile file) { file.setImageExifRotation(GsonHelper.getLongOrNull(rawFile.get("image_exif_rotation"))); } catch(Exception e){ //this properties will be null if something goes wrong + LOGGER.error("Failed to parse slack file", e); } file.setPermalink(GsonHelper.getStringOrNull(rawFile.get("permalink"))); file.setPermalinkPublic(GsonHelper.getStringOrNull(rawFile.get("permalink_public"))); diff --git a/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackJSONParsingUtils.java b/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackJSONParsingUtils.java index 064c4a67..3d1b94f0 100644 --- a/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackJSONParsingUtils.java +++ b/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackJSONParsingUtils.java @@ -56,7 +56,7 @@ static final SlackUser buildSlackUser(JsonObject jsonUser) { slackPresence = SlackPersona.SlackPresence.AWAY; } - return new SlackUserImpl(id, name, realName, email, skype, title, phone, deleted, admin, owner, primaryOwner, restricted, ultraRestricted, bot, tz, tzLabel, tzOffset == null ? null : new Integer(tzOffset.intValue()), slackPresence); + return new SlackUserImpl(id, name, realName, email, skype, title, phone, deleted, admin, owner, primaryOwner, restricted, ultraRestricted, bot, tz, tzLabel, tzOffset, slackPresence); } static final SlackChannel buildSlackChannel(JsonObject jsonChannel, Map knownUsersById) { diff --git a/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackWebSocketSessionImpl.java b/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackWebSocketSessionImpl.java index 50a06f3b..d4c6daa9 100644 --- a/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackWebSocketSessionImpl.java +++ b/sources/src/main/java/com/ullink/slack/simpleslackapi/impl/SlackWebSocketSessionImpl.java @@ -48,6 +48,7 @@ import java.net.ConnectException; import java.net.Proxy; import java.net.URI; +import java.nio.charset.Charset; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; @@ -234,7 +235,7 @@ void dispatch(SlackEvent event) { case USER_TYPING: dispatchImpl((UserTyping) event, userTypingListener); break; - case UNKNOWN: + default: LOGGER.warn("event of type " + event.getEventType() + " not handled: " + ((UnknownEvent)event).getJsonPayload()); } } @@ -867,7 +868,7 @@ private void postSlackCommandWithFile(Map params, byte [] fileCo builder.addBinaryBody("file",fileContent, ContentType.DEFAULT_BINARY,fileName); request.setEntity(builder.build()); HttpResponse response = client.execute(request); - String jsonResponse = ReaderUtils.readAll(new InputStreamReader(response.getEntity().getContent())); + String jsonResponse = ReaderUtils.readAll(new InputStreamReader(response.getEntity().getContent(), Charset.forName("UTF-8"))); LOGGER.debug("PostMessage return: " + jsonResponse); ParsedSlackReply reply = SlackJSONReplyParser.decode(parseObject(jsonResponse),this); handle.setReply(reply);