diff --git a/slack-base/src/main/java/com/hubspot/slack/client/methods/SlackMethods.java b/slack-base/src/main/java/com/hubspot/slack/client/methods/SlackMethods.java index ecddefd4..98504b67 100644 --- a/slack-base/src/main/java/com/hubspot/slack/client/methods/SlackMethods.java +++ b/slack-base/src/main/java/com/hubspot/slack/client/methods/SlackMethods.java @@ -275,7 +275,11 @@ public enum SlackMethods implements SlackMethod { RateLimitingTiers.TIER_2, JsonStatus.ACCEPTS_JSON ), - + files_completeUploadExternal( + MethodWriteMode.WRITE, + RateLimitingTiers.TIER_4, + JsonStatus.ACCEPTS_JSON + ), files_delete(MethodWriteMode.WRITE, RateLimitingTiers.TIER_3, JsonStatus.ACCEPTS_JSON), files_getUploadURLExternal( MethodWriteMode.WRITE, diff --git a/slack-base/src/main/java/com/hubspot/slack/client/methods/params/files/CompleteUploadExternalParamsIF.java b/slack-base/src/main/java/com/hubspot/slack/client/methods/params/files/CompleteUploadExternalParamsIF.java new file mode 100644 index 00000000..44b68055 --- /dev/null +++ b/slack-base/src/main/java/com/hubspot/slack/client/methods/params/files/CompleteUploadExternalParamsIF.java @@ -0,0 +1,20 @@ +package com.hubspot.slack.client.methods.params.files; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.hubspot.immutables.style.HubSpotStyle; +import java.util.List; +import java.util.Optional; +import org.immutables.value.Value.Immutable; + +@Immutable +@HubSpotStyle +@JsonNaming(SnakeCaseStrategy.class) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public interface CompleteUploadExternalParamsIF { + List getFiles(); + Optional getChannelId(); + Optional getThreadTs(); + Optional getInitialComment(); +} diff --git a/slack-base/src/main/java/com/hubspot/slack/client/methods/params/files/FileInfoIF.java b/slack-base/src/main/java/com/hubspot/slack/client/methods/params/files/FileInfoIF.java new file mode 100644 index 00000000..6c4beeef --- /dev/null +++ b/slack-base/src/main/java/com/hubspot/slack/client/methods/params/files/FileInfoIF.java @@ -0,0 +1,14 @@ +package com.hubspot.slack.client.methods.params.files; + +import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.hubspot.immutables.style.HubSpotStyle; +import org.immutables.value.Value.Immutable; + +@Immutable +@HubSpotStyle +@JsonNaming(SnakeCaseStrategy.class) +public interface FileInfoIF { + String getId(); + String getTitle(); +} diff --git a/slack-base/src/main/java/com/hubspot/slack/client/models/response/files/CompleteUploadExternalResponseIF.java b/slack-base/src/main/java/com/hubspot/slack/client/models/response/files/CompleteUploadExternalResponseIF.java new file mode 100644 index 00000000..1a4f8854 --- /dev/null +++ b/slack-base/src/main/java/com/hubspot/slack/client/models/response/files/CompleteUploadExternalResponseIF.java @@ -0,0 +1,16 @@ +package com.hubspot.slack.client.models.response.files; + +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.files.SlackFile; +import com.hubspot.slack.client.models.response.SlackResponse; +import java.util.List; +import org.immutables.value.Value.Immutable; + +@Immutable +@HubSpotStyle +@JsonNaming(SnakeCaseStrategy.class) +public interface CompleteUploadExternalResponseIF extends SlackResponse { + List getFiles(); +} diff --git a/slack-java-client/src/main/java/com/hubspot/slack/client/SlackClient.java b/slack-java-client/src/main/java/com/hubspot/slack/client/SlackClient.java index 8ea43b76..c898c9fd 100644 --- a/slack-java-client/src/main/java/com/hubspot/slack/client/SlackClient.java +++ b/slack-java-client/src/main/java/com/hubspot/slack/client/SlackClient.java @@ -48,6 +48,7 @@ import com.hubspot.slack.client.methods.params.dialog.DialogOpenParams; import com.hubspot.slack.client.methods.params.dnd.DndInfoParams; import com.hubspot.slack.client.methods.params.dnd.DndSetSnoozeParams; +import com.hubspot.slack.client.methods.params.files.CompleteUploadExternalParams; import com.hubspot.slack.client.methods.params.files.FilesSharedPublicUrlParams; import com.hubspot.slack.client.methods.params.files.FilesUploadParams; import com.hubspot.slack.client.methods.params.files.GetUploadUrlExternalParams; @@ -118,6 +119,8 @@ import com.hubspot.slack.client.models.response.dnd.DndInfoResponse; import com.hubspot.slack.client.models.response.dnd.DndSnoozeResponse; import com.hubspot.slack.client.models.response.emoji.EmojiListResponse; +import com.hubspot.slack.client.models.response.files.CompleteUploadExternalResponse; +import com.hubspot.slack.client.models.response.files.CompleteUploadExternalResponseIF; import com.hubspot.slack.client.models.response.files.FilesSharedPublicUrlResponse; import com.hubspot.slack.client.models.response.files.FilesUploadResponse; import com.hubspot.slack.client.models.response.files.GetUploadUrlExternalResponse; @@ -392,10 +395,12 @@ CompletableFuture> addReaction( CompletableFuture> uploadFile( FilesUploadParams params ); - CompletableFuture> getUploadURLExternal( GetUploadUrlExternalParams params ); + CompletableFuture> completeUploadExternal( + CompleteUploadExternalParams params + ); CompletableFuture> shareFilePublically( FilesSharedPublicUrlParams params ); diff --git a/slack-java-client/src/main/java/com/hubspot/slack/client/SlackWebClient.java b/slack-java-client/src/main/java/com/hubspot/slack/client/SlackWebClient.java index e259e55e..c4a90b80 100644 --- a/slack-java-client/src/main/java/com/hubspot/slack/client/SlackWebClient.java +++ b/slack-java-client/src/main/java/com/hubspot/slack/client/SlackWebClient.java @@ -79,6 +79,7 @@ import com.hubspot.slack.client.methods.params.dialog.DialogOpenParams; import com.hubspot.slack.client.methods.params.dnd.DndInfoParams; import com.hubspot.slack.client.methods.params.dnd.DndSetSnoozeParams; +import com.hubspot.slack.client.methods.params.files.CompleteUploadExternalParams; import com.hubspot.slack.client.methods.params.files.FilesSharedPublicUrlParams; import com.hubspot.slack.client.methods.params.files.FilesUploadParams; import com.hubspot.slack.client.methods.params.files.GetUploadUrlExternalParams; @@ -155,6 +156,7 @@ import com.hubspot.slack.client.models.response.dnd.DndInfoResponse; import com.hubspot.slack.client.models.response.dnd.DndSnoozeResponse; import com.hubspot.slack.client.models.response.emoji.EmojiListResponse; +import com.hubspot.slack.client.models.response.files.CompleteUploadExternalResponse; import com.hubspot.slack.client.models.response.files.FilesSharedPublicUrlResponse; import com.hubspot.slack.client.models.response.files.FilesUploadResponse; import com.hubspot.slack.client.models.response.files.GetUploadUrlExternalResponse; @@ -596,7 +598,7 @@ protected LazyLoadingPage, SlackError>, Long> getPage( ChannelsHistoryParams.Builder requestBuilder = ChannelsHistoryParams .builder() .from(params); - if (!params.getCount().isPresent()) { + if (params.getCount().isEmpty()) { requestBuilder.setCount(config.getChannelsHistoryMessageBatchSize().get()); } @@ -633,7 +635,7 @@ protected LazyLoadingPage, SlackError>, Long> getPage( ); CompletableFuture hasMoreFuture = resultFuture.thenApply(result -> - result.match(err -> false, ok -> ok.hasMore()) + result.match(err -> false, ChannelsHistoryResponse::hasMore) ); CompletableFuture nextOffset = nextOffset(pagingDirection, pageFuture); @@ -646,8 +648,8 @@ private CompletableFuture nextOffset( PagingDirection pagingDirection, CompletableFuture, SlackError>> pageFuture ) { - return pageFuture.thenApply(page -> { - return page.match( + return pageFuture.thenApply(page -> + page.match( err -> null, messages -> { Set timestamps = messages @@ -670,8 +672,8 @@ private CompletableFuture nextOffset( return null; } - ); - }); + ) + ); } @Override @@ -1037,7 +1039,7 @@ protected LazyLoadingPage, SlackError>, Long> getPage( ConversationsHistoryParams.Builder requestBuilder = ConversationsHistoryParams .builder() .from(params); - if (!params.getLimit().isPresent()) { + if (params.getLimit().isEmpty()) { requestBuilder.setLimit(config.getConversationsHistoryMessageBatchSize().get()); } @@ -1074,7 +1076,7 @@ protected LazyLoadingPage, SlackError>, Long> getPage( ); CompletableFuture hasMoreFuture = resultFuture.thenApply(result -> - result.match(err -> false, ok -> ok.hasMore()) + result.match(err -> false, ConversationsHistoryResponse::hasMore) ); CompletableFuture nextOffset = nextOffset(pagingDirection, pageFuture); @@ -1157,7 +1159,7 @@ protected LazyLoadingPage, SlackError>, String> getPage( ConversationMemberParams.Builder requestBuilder = ConversationMemberParams .builder() .from(params); - if (!params.getLimit().isPresent()) { + if (params.getLimit().isEmpty()) { requestBuilder.setLimit(config.getConversationMembersBatchSize().get()); } Optional.ofNullable(offset).ifPresent(requestBuilder::setCursor); @@ -1412,6 +1414,17 @@ public CompletableFuture> getUp ); } + @Override + public CompletableFuture> completeUploadExternal( + CompleteUploadExternalParams params + ) { + return postSlackCommand( + SlackMethods.files_completeUploadExternal, + params, + CompleteUploadExternalResponse.class + ); + } + @Override public CompletableFuture> shareFilePublically( FilesSharedPublicUrlParams params