Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,21 @@ public enum SlackMethods implements SlackMethod {
RateLimitingTiers.TIER_3,
JsonStatus.ACCEPTS_JSON
),
chat_startStream(
MethodWriteMode.WRITE,
RateLimitingTiers.TIER_2,
JsonStatus.ACCEPTS_JSON
),
chat_stopStream(
MethodWriteMode.WRITE,
RateLimitingTiers.TIER_2,
JsonStatus.ACCEPTS_JSON
),
chat_appendStream(
MethodWriteMode.WRITE,
RateLimitingTiers.TIER_4,
JsonStatus.ACCEPTS_JSON
),

conversations_archive(
MethodWriteMode.WRITE,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.hubspot.slack.client.methods.params.stream;

import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
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.Immutable;

@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface ChatAppendStreamParamsIF extends StreamParams {
String getTs();

@Check
default void checkExactlyOnePresent() {
Preconditions.checkState(
getMarkdownText().isPresent() ^ !getChunks().isEmpty(),
"Exactly one of markdownText or chunks must be provided"
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.hubspot.slack.client.methods.params.stream;

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

@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface ChatStartStreamParamsIF extends StreamParams {
String getThreadTs();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<String> getRecipientUserId();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<String> getRecipientTeamId();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<String> getTaskDisplayMode();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<String> getIconEmoji();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<String> getIconUrl();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<String> getUsername();

@Check
default void checkNotBothPresent() {
Preconditions.checkState(
!(getMarkdownText().isPresent() && !getChunks().isEmpty()),
"markdownText and chunks are mutually exclusive"
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.hubspot.slack.client.methods.params.stream;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.google.common.collect.ImmutableList;
import com.hubspot.immutables.style.HubSpotStyle;
import com.hubspot.slack.client.models.blocks.Block;
import java.util.Optional;
import org.immutables.value.Value.Immutable;

@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface ChatStopStreamParamsIF extends StreamParams {
String getTs();

@JsonInclude(JsonInclude.Include.NON_EMPTY)
ImmutableList<Block> getBlocks();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<StreamMetadata> getMetadata();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.hubspot.slack.client.methods.params.stream;

import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.hubspot.immutables.style.HubSpotStyle;
import java.util.Map;
import org.immutables.value.Value.Immutable;

@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface StreamMetadataIF {
String getEventType();

Map<String, Object> getEventPayload();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.hubspot.slack.client.methods.params.stream;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.hubspot.slack.client.methods.params.stream.chunks.StreamChunk;
import java.util.Optional;
import org.immutables.value.Value.Check;

public interface StreamParams {
String getChannel();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<String> getMarkdownText();

@JsonInclude(JsonInclude.Include.NON_EMPTY)
ImmutableList<StreamChunk> getChunks();

@Check
default void checkMutuallyExclusive() {
Preconditions.checkState(
!(getMarkdownText().isPresent() && !getChunks().isEmpty()),
"markdownText and chunks are mutually exclusive"
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.hubspot.slack.client.methods.params.stream.chunks;

import com.google.common.collect.ImmutableList;
import com.hubspot.immutables.style.HubSpotStyle;
import com.hubspot.slack.client.models.blocks.elements.BlockElement;
import org.immutables.value.Value.Derived;
import org.immutables.value.Value.Immutable;

@Immutable
@HubSpotStyle
public interface BlocksChunkIF extends StreamChunk {
String TYPE = "blocks";

@Override
@Derived
default String getType() {
return TYPE;
}

ImmutableList<BlockElement> getBlocks();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.hubspot.slack.client.methods.params.stream.chunks;

import com.hubspot.immutables.style.HubSpotStyle;
import org.immutables.value.Value.Derived;
import org.immutables.value.Value.Immutable;

@Immutable
@HubSpotStyle
public interface MarkdownTextChunkIF extends StreamChunk {
String TYPE = "markdown_text";

@Override
@Derived
default String getType() {
return TYPE;
}

String getText();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.hubspot.slack.client.methods.params.stream.chunks;

import com.hubspot.immutables.style.HubSpotStyle;
import org.immutables.value.Value.Derived;
import org.immutables.value.Value.Immutable;

@Immutable
@HubSpotStyle
public interface PlanUpdateChunkIF extends StreamChunk {
String TYPE = "plan_update";

@Override
@Derived
default String getType() {
return TYPE;
}

String getTitle();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.hubspot.slack.client.methods.params.stream.chunks;

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "type",
defaultImpl = UnknownStreamChunk.class
)
@JsonSubTypes(
{
@JsonSubTypes.Type(value = MarkdownTextChunk.class, name = MarkdownTextChunk.TYPE),
@JsonSubTypes.Type(value = TaskUpdateChunk.class, name = TaskUpdateChunk.TYPE),
@JsonSubTypes.Type(value = PlanUpdateChunk.class, name = PlanUpdateChunk.TYPE),
@JsonSubTypes.Type(value = BlocksChunk.class, name = BlocksChunk.TYPE),
}
)
public interface StreamChunk {
String getType();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.hubspot.slack.client.methods.params.stream.chunks;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.google.common.collect.ImmutableList;
import com.hubspot.immutables.style.HubSpotStyle;
import com.hubspot.slack.client.models.blocks.TaskCardBlockStatus;
import com.hubspot.slack.client.models.blocks.elements.UrlSource;
import java.util.Optional;
import org.immutables.value.Value.Derived;
import org.immutables.value.Value.Immutable;

@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface TaskUpdateChunkIF extends StreamChunk {
String TYPE = "task_update";

@Override
@Derived
default String getType() {
return TYPE;
}

String getId();

String getTitle();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<TaskCardBlockStatus> getStatus();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<String> getDetails();

@JsonInclude(JsonInclude.Include.NON_ABSENT)
Optional<String> getOutput();

ImmutableList<UrlSource> getSources();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.hubspot.slack.client.methods.params.stream.chunks;

public class UnknownStreamChunk implements StreamChunk {

public static final String TYPE = "unknown";

protected UnknownStreamChunk() {}

@Override
public String getType() {
return TYPE;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.hubspot.slack.client.models.response.chat;

import com.hubspot.immutables.style.HubSpotStyle;
import com.hubspot.slack.client.models.response.SlackResponse;
import org.immutables.value.Value.Immutable;

@Immutable
@HubSpotStyle
public interface ChatStartStreamResponseIF extends SlackResponse {
String getChannel();

String getTs();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.hubspot.slack.client.models.response.chat;

import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.hubspot.immutables.style.HubSpotStyle;
import com.hubspot.slack.client.models.response.SlackResponse;
import java.util.Map;
import org.immutables.value.Value.Immutable;

@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface ChatStopStreamResponseIF extends SlackResponse {
String getChannel();

String getTs();

Map<String, Object> getMessage();
}
Loading