diff --git a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/Block.java b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/Block.java index beeedf4f..3d0dc012 100644 --- a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/Block.java +++ b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/Block.java @@ -22,6 +22,7 @@ @JsonSubTypes.Type(value = Image.class, name = Image.TYPE), @JsonSubTypes.Type(value = Input.class, name = Input.TYPE), @JsonSubTypes.Type(value = Section.class, name = Section.TYPE), + @JsonSubTypes.Type(value = Markdown.class, name = Markdown.TYPE), } ) @JsonInclude(JsonInclude.Include.NON_EMPTY) diff --git a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/BlockElementLengthLimits.java b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/BlockElementLengthLimits.java index b9f9efc2..a044b499 100644 --- a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/BlockElementLengthLimits.java +++ b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/BlockElementLengthLimits.java @@ -11,7 +11,8 @@ public enum BlockElementLengthLimits { MAX_OPTION_GROUP_LABEL_LENGTH(75), MAX_OPTION_VALUE_LENGTH(75), MAX_CHECKBOXES_NUMBER(10), - MAX_RADIO_BUTTONS_NUMBER(10); + MAX_RADIO_BUTTONS_NUMBER(10), + MAX_MARKDOWN_LENGTH(12000); private final int limit; diff --git a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/MarkdownIF.java b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/MarkdownIF.java new file mode 100644 index 00000000..d8090d8d --- /dev/null +++ b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/MarkdownIF.java @@ -0,0 +1,50 @@ +package com.hubspot.slack.client.models.blocks; + +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.google.common.base.Preconditions; +import com.hubspot.immutables.style.HubSpotStyle; +import org.immutables.value.Value.Check; +import org.immutables.value.Value.Derived; +import org.immutables.value.Value.Immutable; +import org.immutables.value.Value.Parameter; + +@Immutable +@HubSpotStyle +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) +public interface MarkdownIF extends Block { + String TYPE = "markdown"; + + /** + * The type of block. For a markdown block, type is always markdown. + *

+ * Type: String + *
+ * Required: true + */ + @Override + @Derived + default String getType() { + return TYPE; + } + + /** + * The standard markdown-formatted text. Limit 12,000 characters max. + *

+ * Type: String + *
+ * Required: true + */ + @Parameter + String getText(); + + @Check + default void check() { + Preconditions.checkState( + getText().length() < BlockElementLengthLimits.MAX_MARKDOWN_LENGTH.getLimit(), + "Text length must be less than " + + BlockElementLengthLimits.MAX_MARKDOWN_LENGTH.getLimit() + + " characters" + ); + } +}