Skip to content

Commit 9504d94

Browse files
authored
feat: add chat.{start|append|stop}Stream api methods (#1518)
1 parent d1f005c commit 9504d94

File tree

23 files changed

+456
-14
lines changed

23 files changed

+456
-14
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"ok": false,
3+
"error": "",
4+
"needed": "",
5+
"provided": "",
6+
"channel": "C00000000",
7+
"ts": "0000000000.000000"
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"ok": false,
3+
"ts": "0000000000.000000",
4+
"error": "",
5+
"needed": "",
6+
"provided": "",
7+
"channel": "C00000000"
8+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"ok": false,
3+
"error": "",
4+
"needed": "",
5+
"provided": ""
6+
}
7+

metadata/web-api/rate_limit_tiers.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@
150150
"channels.setPurpose": "Tier2",
151151
"channels.setTopic": "Tier2",
152152
"channels.unarchive": "Tier2",
153+
"chat.appendStream": "Tier4",
153154
"chat.delete": "Tier3",
154155
"chat.deleteScheduledMessage": "Tier3",
155156
"chat.getPermalink": "SpecialTier_chat_getPermalink",
@@ -158,6 +159,8 @@
158159
"chat.postMessage": "SpecialTier_chat_postMessage",
159160
"chat.scheduleMessage": "Tier3",
160161
"chat.scheduledMessages.list": "Tier3",
162+
"chat.startStream": "Tier2",
163+
"chat.stopStream": "Tier2",
161164
"chat.unfurl": "Tier3",
162165
"chat.update": "Tier3",
163166
"conversations.acceptSharedInvite": "Tier1",

slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -939,6 +939,10 @@ CompletableFuture<AdminConversationsWhitelistListGroupsLinkedToChannelResponse>
939939
// chat
940940
// ------------------------------
941941

942+
CompletableFuture<ChatAppendStreamResponse> chatAppendStream(ChatAppendStreamRequest req);
943+
944+
CompletableFuture<ChatAppendStreamResponse> chatAppendStream(RequestConfigurator<ChatAppendStreamRequest.ChatAppendStreamRequestBuilder> req);
945+
942946
CompletableFuture<ChatGetPermalinkResponse> chatGetPermalink(ChatGetPermalinkRequest req);
943947

944948
CompletableFuture<ChatGetPermalinkResponse> chatGetPermalink(RequestConfigurator<ChatGetPermalinkRequest.ChatGetPermalinkRequestBuilder> req);
@@ -967,6 +971,14 @@ CompletableFuture<AdminConversationsWhitelistListGroupsLinkedToChannelResponse>
967971

968972
CompletableFuture<ChatScheduleMessageResponse> chatScheduleMessage(RequestConfigurator<ChatScheduleMessageRequest.ChatScheduleMessageRequestBuilder> req);
969973

974+
CompletableFuture<ChatStartStreamResponse> chatStartStream(ChatStartStreamRequest req);
975+
976+
CompletableFuture<ChatStartStreamResponse> chatStartStream(RequestConfigurator<ChatStartStreamRequest.ChatStartStreamRequestBuilder> req);
977+
978+
CompletableFuture<ChatStopStreamResponse> chatStopStream(ChatStopStreamRequest req);
979+
980+
CompletableFuture<ChatStopStreamResponse> chatStopStream(RequestConfigurator<ChatStopStreamRequest.ChatStopStreamRequestBuilder> req);
981+
970982
CompletableFuture<ChatUpdateResponse> chatUpdate(ChatUpdateRequest req);
971983

972984
CompletableFuture<ChatUpdateResponse> chatUpdate(RequestConfigurator<ChatUpdateRequest.ChatUpdateRequestBuilder> req);

slack-api-client/src/main/java/com/slack/api/methods/Methods.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,13 +378,16 @@ private Methods() {
378378
// chat
379379
// ------------------------------
380380

381+
public static final String CHAT_APPEND_STREAM = "chat.appendStream";
381382
public static final String CHAT_DELETE = "chat.delete";
382383
public static final String CHAT_DELETE_SCHEDULED_MESSAGE = "chat.deleteScheduledMessage";
383384
public static final String CHAT_GET_PERMALINK = "chat.getPermalink";
384385
public static final String CHAT_ME_MESSAGE = "chat.meMessage";
385386
public static final String CHAT_POST_EPHEMERAL = "chat.postEphemeral";
386387
public static final String CHAT_POST_MESSAGE = "chat.postMessage";
387388
public static final String CHAT_SCHEDULE_MESSAGE = "chat.scheduleMessage";
389+
public static final String CHAT_START_STREAM = "chat.startStream";
390+
public static final String CHAT_STOP_STREAM = "chat.stopStream";
388391
public static final String CHAT_UNFURL = "chat.unfurl";
389392
public static final String CHAT_UPDATE = "chat.update";
390393

slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1225,6 +1225,10 @@ AdminUsergroupsRemoveChannelsResponse adminUsergroupsRemoveChannels(
12251225
// chat
12261226
// ------------------------------
12271227

1228+
ChatAppendStreamResponse chatAppendStream(ChatAppendStreamRequest req) throws IOException, SlackApiException;
1229+
1230+
ChatAppendStreamResponse chatAppendStream(RequestConfigurator<ChatAppendStreamRequest.ChatAppendStreamRequestBuilder> req) throws IOException, SlackApiException;
1231+
12281232
ChatGetPermalinkResponse chatGetPermalink(ChatGetPermalinkRequest req) throws IOException, SlackApiException;
12291233

12301234
ChatGetPermalinkResponse chatGetPermalink(RequestConfigurator<ChatGetPermalinkRequest.ChatGetPermalinkRequestBuilder> req) throws IOException, SlackApiException;
@@ -1253,6 +1257,14 @@ AdminUsergroupsRemoveChannelsResponse adminUsergroupsRemoveChannels(
12531257

12541258
ChatScheduleMessageResponse chatScheduleMessage(RequestConfigurator<ChatScheduleMessageRequest.ChatScheduleMessageRequestBuilder> req) throws IOException, SlackApiException;
12551259

1260+
ChatStartStreamResponse chatStartStream(ChatStartStreamRequest req) throws IOException, SlackApiException;
1261+
1262+
ChatStartStreamResponse chatStartStream(RequestConfigurator<ChatStartStreamRequest.ChatStartStreamRequestBuilder> req) throws IOException, SlackApiException;
1263+
1264+
ChatStopStreamResponse chatStopStream(ChatStopStreamRequest req) throws IOException, SlackApiException;
1265+
1266+
ChatStopStreamResponse chatStopStream(RequestConfigurator<ChatStopStreamRequest.ChatStopStreamRequestBuilder> req) throws IOException, SlackApiException;
1267+
12561268
ChatUpdateResponse chatUpdate(ChatUpdateRequest req) throws IOException, SlackApiException;
12571269

12581270
ChatUpdateResponse chatUpdate(RequestConfigurator<ChatUpdateRequest.ChatUpdateRequestBuilder> req) throws IOException, SlackApiException;

slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
/**
1616
* The comprehensive list of Slack Web API rate limits.
1717
*
18-
* @see <a href="https://docs.slack.dev/apis/web-api/rate-limits">api.slack.com document</a>
18+
* @see <a href="https://docs.slack.dev/apis/web-api/rate-limits">API reference</a>
1919
*/
2020
@Slf4j
2121
public class MethodsRateLimits {
@@ -257,13 +257,16 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier
257257
setRateLimitTier(CANVASES_SECTIONS_LOOKUP, Tier3);
258258
setRateLimitTier(CONVERSATIONS_CANVASES_CREATE, Tier2);
259259

260+
setRateLimitTier(CHAT_APPEND_STREAM, Tier4);
260261
setRateLimitTier(CHAT_DELETE, Tier3);
261262
setRateLimitTier(CHAT_DELETE_SCHEDULED_MESSAGE, Tier3);
262263
setRateLimitTier(CHAT_GET_PERMALINK, SpecialTier_chat_getPermalink);
263264
setRateLimitTier(CHAT_ME_MESSAGE, Tier3);
264265
setRateLimitTier(CHAT_POST_EPHEMERAL, Tier4);
265266
setRateLimitTier(CHAT_POST_MESSAGE, SpecialTier_chat_postMessage);
266267
setRateLimitTier(CHAT_SCHEDULE_MESSAGE, Tier3);
268+
setRateLimitTier(CHAT_START_STREAM, Tier2);
269+
setRateLimitTier(CHAT_STOP_STREAM, Tier2);
267270
setRateLimitTier(CHAT_UNFURL, Tier3);
268271
setRateLimitTier(CHAT_UPDATE, Tier3);
269272
setRateLimitTier(CHAT_SCHEDULED_MESSAGES_LIST, Tier3);

slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1447,10 +1447,11 @@ public static FormBody.Builder toForm(ChannelsUnarchiveRequest req) {
14471447
return form;
14481448
}
14491449

1450-
public static FormBody.Builder toForm(ChatGetPermalinkRequest req) {
1450+
public static FormBody.Builder toForm(ChatAppendStreamRequest req) {
14511451
FormBody.Builder form = new FormBody.Builder();
14521452
setIfNotNull("channel", req.getChannel(), form);
1453-
setIfNotNull("message_ts", req.getMessageTs(), form);
1453+
setIfNotNull("ts", req.getTs(), form);
1454+
setIfNotNull("markdown_text", req.getMarkdownText(), form);
14541455
return form;
14551456
}
14561457

@@ -1470,6 +1471,13 @@ public static FormBody.Builder toForm(ChatDeleteScheduledMessageRequest req) {
14701471
return form;
14711472
}
14721473

1474+
public static FormBody.Builder toForm(ChatGetPermalinkRequest req) {
1475+
FormBody.Builder form = new FormBody.Builder();
1476+
setIfNotNull("channel", req.getChannel(), form);
1477+
setIfNotNull("message_ts", req.getMessageTs(), form);
1478+
return form;
1479+
}
1480+
14731481
public static FormBody.Builder toForm(ChatMeMessageRequest req) {
14741482
FormBody.Builder form = new FormBody.Builder();
14751483
setIfNotNull("channel", req.getChannel(), form);
@@ -1619,6 +1627,40 @@ public static FormBody.Builder toForm(ChatPostMessageRequest req) {
16191627
return form;
16201628
}
16211629

1630+
public static FormBody.Builder toForm(ChatStartStreamRequest req) {
1631+
FormBody.Builder form = new FormBody.Builder();
1632+
setIfNotNull("channel", req.getChannel(), form);
1633+
setIfNotNull("thread_ts", req.getThreadTs(), form);
1634+
setIfNotNull("markdown_text", req.getMarkdownText(), form);
1635+
setIfNotNull("recipient_user_id", req.getRecipientUserId(), form);
1636+
setIfNotNull("recipient_team_id", req.getRecipientTeamId(), form);
1637+
return form;
1638+
}
1639+
1640+
public static FormBody.Builder toForm(ChatStopStreamRequest req) {
1641+
FormBody.Builder form = new FormBody.Builder();
1642+
setIfNotNull("channel", req.getChannel(), form);
1643+
setIfNotNull("ts", req.getTs(), form);
1644+
setIfNotNull("markdown_text", req.getMarkdownText(), form);
1645+
1646+
if (req.getMetadataAsString() != null) {
1647+
form.add("metadata", req.getMetadataAsString());
1648+
} else if (req.getMetadata() != null) {
1649+
String json = GSON.toJson(req.getMetadata());
1650+
form.add("metadata", json);
1651+
}
1652+
if (req.getBlocksAsString() != null) {
1653+
form.add("blocks", req.getBlocksAsString());
1654+
} else if (req.getBlocks() != null) {
1655+
String json = getJsonWithGsonAnonymInnerClassHandling(req.getBlocks());
1656+
form.add("blocks", json);
1657+
}
1658+
if (req.getBlocksAsString() != null && req.getBlocks() != null) {
1659+
log.warn("Although you set both blocksAsString and blocks, only blocksAsString was used.");
1660+
}
1661+
return form;
1662+
}
1663+
16221664
public static FormBody.Builder toForm(ChatUpdateRequest req) {
16231665
warnIfEitherTextOrAttachmentFallbackIsMissing(
16241666
"chat.update",

slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1595,13 +1595,13 @@ public CompletableFuture<CanvasesSectionsLookupResponse> canvasesSectionsLookup(
15951595
}
15961596

15971597
@Override
1598-
public CompletableFuture<ChatGetPermalinkResponse> chatGetPermalink(ChatGetPermalinkRequest req) {
1599-
return executor.execute(CHAT_GET_PERMALINK, toMap(req), () -> methods.chatGetPermalink(req));
1598+
public CompletableFuture<ChatAppendStreamResponse> chatAppendStream(ChatAppendStreamRequest req) {
1599+
return executor.execute(CHAT_APPEND_STREAM, toMap(req), () -> methods.chatAppendStream(req));
16001600
}
16011601

16021602
@Override
1603-
public CompletableFuture<ChatGetPermalinkResponse> chatGetPermalink(RequestConfigurator<ChatGetPermalinkRequest.ChatGetPermalinkRequestBuilder> req) {
1604-
return chatGetPermalink(req.configure(ChatGetPermalinkRequest.builder()).build());
1603+
public CompletableFuture<ChatAppendStreamResponse> chatAppendStream(RequestConfigurator<ChatAppendStreamRequest.ChatAppendStreamRequestBuilder> req) {
1604+
return chatAppendStream(req.configure(ChatAppendStreamRequest.builder()).build());
16051605
}
16061606

16071607
@Override
@@ -1624,6 +1624,16 @@ public CompletableFuture<ChatDeleteScheduledMessageResponse> chatDeleteScheduled
16241624
return chatDeleteScheduledMessage(req.configure(ChatDeleteScheduledMessageRequest.builder()).build());
16251625
}
16261626

1627+
@Override
1628+
public CompletableFuture<ChatGetPermalinkResponse> chatGetPermalink(ChatGetPermalinkRequest req) {
1629+
return executor.execute(CHAT_GET_PERMALINK, toMap(req), () -> methods.chatGetPermalink(req));
1630+
}
1631+
1632+
@Override
1633+
public CompletableFuture<ChatGetPermalinkResponse> chatGetPermalink(RequestConfigurator<ChatGetPermalinkRequest.ChatGetPermalinkRequestBuilder> req) {
1634+
return chatGetPermalink(req.configure(ChatGetPermalinkRequest.builder()).build());
1635+
}
1636+
16271637
@Override
16281638
public CompletableFuture<ChatMeMessageResponse> chatMeMessage(ChatMeMessageRequest req) {
16291639
return executor.execute(CHAT_ME_MESSAGE, toMap(req), () -> methods.chatMeMessage(req));
@@ -1667,6 +1677,26 @@ public CompletableFuture<ChatScheduleMessageResponse> chatScheduleMessage(Reques
16671677
return chatScheduleMessage(req.configure(ChatScheduleMessageRequest.builder()).build());
16681678
}
16691679

1680+
@Override
1681+
public CompletableFuture<ChatStartStreamResponse> chatStartStream(ChatStartStreamRequest req) {
1682+
return executor.execute(CHAT_START_STREAM, toMap(req), () -> methods.chatStartStream(req));
1683+
}
1684+
1685+
@Override
1686+
public CompletableFuture<ChatStartStreamResponse> chatStartStream(RequestConfigurator<ChatStartStreamRequest.ChatStartStreamRequestBuilder> req) {
1687+
return chatStartStream(req.configure(ChatStartStreamRequest.builder()).build());
1688+
}
1689+
1690+
@Override
1691+
public CompletableFuture<ChatStopStreamResponse> chatStopStream(ChatStopStreamRequest req) {
1692+
return executor.execute(CHAT_STOP_STREAM, toMap(req), () -> methods.chatStopStream(req));
1693+
}
1694+
1695+
@Override
1696+
public CompletableFuture<ChatStopStreamResponse> chatStopStream(RequestConfigurator<ChatStopStreamRequest.ChatStopStreamRequestBuilder> req) {
1697+
return chatStopStream(req.configure(ChatStopStreamRequest.builder()).build());
1698+
}
1699+
16701700
@Override
16711701
public CompletableFuture<ChatUpdateResponse> chatUpdate(ChatUpdateRequest req) {
16721702
return executor.execute(CHAT_UPDATE, toMap(req), () -> methods.chatUpdate(req));

0 commit comments

Comments
 (0)