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

com.hubspot.slack.client.methods.params.chat.AbstractChatMessageParams Maven / Gradle / Ivy

package com.hubspot.slack.client.methods.params.chat;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import java.util.Optional;
import org.immutables.value.Value.Check;

@JsonNaming(SnakeCaseStrategy.class)
public abstract class AbstractChatMessageParams implements MessageParams {

  @JsonProperty("channel")
  public abstract String getChannelId();

  public abstract Optional getText();

  public abstract Optional getThreadTs();

  public abstract Optional getUsername();

  @JsonInclude(JsonInclude.Include.NON_ABSENT)
  public abstract Optional getAsUser();

  public abstract Optional getIconEmoji();

  public abstract Optional getIconUrl();

  public abstract Optional getLinkNames();

  public abstract Optional getUnfurlLinks();

  public abstract Optional getUnfurlMedia();

  public abstract Optional getReplyBroadcast();

  @Check
  public void check() {
    Preconditions.checkState(
      (getText().isPresent() && !Strings.isNullOrEmpty(getText().get())) ||
      !getAttachments().isEmpty() ||
      !getBlocks().isEmpty(),
      "Must include text if not providing attachments or blocks"
    );
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy