All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.riversun.xternal.simpleslackapi.impl.SlackJSONAttachmentFormatter Maven / Gradle / Ivy

The newest version!
package org.riversun.xternal.simpleslackapi.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.riversun.xternal.simpleslackapi.SlackAction;
import org.riversun.xternal.simpleslackapi.SlackAttachment;
import org.riversun.xternal.simpleslackapi.SlackField;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

class SlackJSONAttachmentFormatter
{
    public static List encodeAttachments(SlackAttachment... attachments)
    {
        List toReturn = new ArrayList<>();
        for (int i = 0; i < attachments.length; i++)
        {
            JsonObject attachmentJSON = new JsonObject();
            toReturn.add(attachmentJSON);
            if (attachments[i].getTitle() != null)
            {
                attachmentJSON.addProperty("title", attachments[i].getTitle());
            }
            if (attachments[i].getThumbUrl() != null)
            {
                attachmentJSON.addProperty("thumb_url", attachments[i].getThumbUrl());
            }
            if (attachments[i].getTitleLink() != null)
            {
                attachmentJSON.addProperty("title_link", attachments[i].getTitleLink());
            }
            if (attachments[i].getText() != null)
            {
                attachmentJSON.addProperty("text", attachments[i].getText());
            }
            if (attachments[i].getColor() != null)
            {
                attachmentJSON.addProperty("color", attachments[i].getColor());
            }
            if (attachments[i].getPretext() != null)
            {
                attachmentJSON.addProperty("pretext", attachments[i].getPretext());
            }
            if (attachments[i].getFallback() != null)
            {
                attachmentJSON.addProperty("fallback", attachments[i].getFallback());
            }
            if (attachments[i].getCallbackId() != null) {
                attachmentJSON.addProperty("callback_id", attachments[i].getCallbackId());
            }
            if (attachments[i].getAuthorName() != null) {
                attachmentJSON.addProperty("author_name", attachments[i].getAuthorName());
            }
            if (attachments[i].getAuthorLink() != null) {
                attachmentJSON.addProperty("author_link", attachments[i].getAuthorLink());
            }
            if (attachments[i].getAuthorIcon() != null) {
                attachmentJSON.addProperty("author_icon", attachments[i].getAuthorIcon());
            }
            if (attachments[i].getImageUrl() != null) {
                attachmentJSON.addProperty("image_url", attachments[i].getImageUrl());
            }
            if (attachments[i].getFooter() != null) {
                attachmentJSON.addProperty("footer", attachments[i].getFooter());
            }
            if (attachments[i].getFooterIcon() != null) {
                attachmentJSON.addProperty("footer_icon", attachments[i].getFooterIcon());
            }
            if (attachments[i].getMiscRootFields() != null)
            {
                for (Map.Entry entry : attachments[i].getMiscRootFields().entrySet())
                {
                    attachmentJSON.addProperty(entry.getKey(), entry.getValue());
                }
            }
            if (attachments[i].getMarkdown_in() != null && !attachments[i].getMarkdown_in().isEmpty())
            {
                JsonArray array = new JsonArray();
                for (String markdown : attachments[i].getMarkdown_in()) {
                    array.add(markdown);
                }
                attachmentJSON.add("mrkdwn_in", array);
            }
            if (attachments[i].getFields() != null && !attachments[i].getFields().isEmpty())
            {
                attachmentJSON.add("fields", encodeAttachmentFields(attachments[i].getFields()));
            }
            if (attachments[i].getActions() != null && !attachments[i].getActions().isEmpty())
            {
                attachmentJSON.add("actions", encodeAttachmentActions(attachments[i].getActions()));
            }
        }
        return toReturn;
    }

    private static JsonArray encodeAttachmentFields(List fields)
    {
        JsonArray toReturn = new JsonArray();
        for (SlackField field : fields)
        {
            JsonObject fieldJSON = new JsonObject();
            if (field.getTitle() != null)
            {
                fieldJSON.addProperty("title", field.getTitle());
            }
            if (field.getValue() != null)
            {
                fieldJSON.addProperty("value", field.getValue());
            }
            fieldJSON.addProperty("short", field.isShort());
            toReturn.add(fieldJSON);
        }
        return toReturn;
    }

    private static JsonArray encodeAttachmentActions(List actions) {
        JsonArray toReturn = new JsonArray();
        for (SlackAction action : actions) {
            JsonObject actionJSON = new JsonObject();
            toReturn.add(actionJSON);
            if (action.getName() != null)
            {
                actionJSON.addProperty("name", action.getName());
            }
            if (action.getText() != null)
            {
                actionJSON.addProperty("text", action.getText());
            }
            if (action.getType() != null)
            {
                actionJSON.addProperty("type", action.getType());
            }
            if (action.getValue() != null)
            {
                actionJSON.addProperty("value", action.getValue());
            }
            if (action.getStyle() != null)
            {
                actionJSON.addProperty("style", action.getStyle());
            }
            if (action.getConfirm() != null)
            {
                actionJSON.add("confirm", encodeAttachmentActionsConfirmation(action.getConfirm()));
            }
        }
        return toReturn;
    }

    private static JsonObject encodeAttachmentActionsConfirmation(SlackAction.SlackConfirmation confirmation) {
        JsonObject toReturn = new JsonObject();
        if (confirmation.getTitle() != null)
        {
            toReturn.addProperty("title", confirmation.getTitle());
        }
        if(confirmation.getText() != null)
        {
            toReturn.addProperty("text", confirmation.getText());
        }
        if(confirmation.getOkText() != null)
        {
            toReturn.addProperty("ok_text", confirmation.getOkText());
        }
        if(confirmation.getDismissText() != null)
        {
            toReturn.addProperty("dismiss_text", confirmation.getDismissText());
        }
        return toReturn;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy