Skip to content

Commit 480be25

Browse files
committed
Add requestFileInfo param to MethodsClient#filesUploadV2 method
1 parent b4d0161 commit 480be25

File tree

4 files changed

+64
-5
lines changed

4 files changed

+64
-5
lines changed

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.slack.api.methods.response.files.FilesGetUploadURLExternalResponse;
1111
import com.slack.api.methods.response.files.FilesInfoResponse;
1212
import com.slack.api.methods.response.files.FilesUploadV2Response;
13+
import com.slack.api.model.File;
1314
import com.slack.api.util.http.SlackHttpClient;
1415
import lombok.Data;
1516
import lombok.extern.slf4j.Slf4j;
@@ -106,12 +107,17 @@ public FilesUploadV2Response completeUploads(
106107

107108
result.setFiles(new ArrayList<>());
108109
for (FilesCompleteUploadExternalResponse.FileDetails file : response.getFiles()) {
109-
FilesInfoResponse fileInfo = this.client.filesInfo(r -> r.token(v2Request.getToken()).file(file.getId()));
110-
underlyingException.getFileInfoResponses().add(fileInfo);
111-
if (!fileInfo.isOk()) {
112-
throw underlyingException;
110+
if (v2Request.isRequestFileInfo()) {
111+
FilesInfoResponse fileInfo = this.client.filesInfo(r -> r.token(v2Request.getToken()).file(file.getId()));
112+
underlyingException.getFileInfoResponses().add(fileInfo);
113+
if (!fileInfo.isOk()) {
114+
throw underlyingException;
115+
}
116+
result.getFiles().add(fileInfo.getFile());
117+
} else {
118+
File partialFileObject = File.builder().id(file.getId()).title(file.getTitle()).build();
119+
result.getFiles().add(partialFileObject);
113120
}
114-
result.getFiles().add(fileInfo.getFile());
115121
}
116122

117123
result.setOk(true);

slack-api-client/src/main/java/com/slack/api/methods/request/files/FilesUploadV2Request.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ public class FilesUploadV2Request implements SlackApiRequest {
7171
*/
7272
private String snippetType;
7373

74+
/**
75+
* Fetches all the file metadata for better v1 compatibility when this property is true.
76+
*/
77+
@Builder.Default
78+
private boolean requestFileInfo = true;
79+
7480
@Data
7581
@Builder
7682
@NoArgsConstructor

slack-api-client/src/test/java/test_locally/api/methods/FilesTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,17 @@ public void fileUploadV2_file() throws Exception {
133133
r.file(file).filename("sample.txt").title("sample.txt"));
134134
assertThat(response.isOk(), is(true));
135135

136+
response = slack.methods(ValidToken).filesUploadV2(r ->
137+
r.file(file).filename("sample.txt").title("sample.txt").requestFileInfo(false));
138+
assertThat(response.isOk(), is(true));
139+
136140
response = slack.methodsAsync(ValidToken).filesUploadV2(r ->
137141
r.file(file).filename("sample.txt").title("sample.txt")).get();
138142
assertThat(response.isOk(), is(true));
143+
144+
response = slack.methodsAsync(ValidToken).filesUploadV2(r ->
145+
r.file(file).filename("sample.txt").title("sample.txt").requestFileInfo(false)).get();
146+
assertThat(response.isOk(), is(true));
139147
}
140148

141149
@Test

slack-api-client/src/test/java/test_with_remote_apis/methods/files_Test.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,45 @@ public void createLongTextFile_v2_full_args() throws Exception {
391391
);
392392
assertThat(response.getError(), is(nullValue()));
393393
assertThat(response.isOk(), is(true));
394+
assertThat(response.getFile().getTitle(), is("file title"));
395+
assertThat(response.getFile().getName(), is("sample.txt"));
396+
397+
// I know this is a bit long but this can be necessary for test stability
398+
Thread.sleep(10000L);
399+
fileObj = slack.methods(botToken).filesInfo(r -> r.file(response.getFile().getId())).getFile();
400+
401+
assertThat(fileObj.getTitle(), is("file title"));
402+
assertThat(fileObj.getName(), is("sample.txt"));
403+
}
404+
{
405+
ChatDeleteResponse response = slack.methods(botToken).chatDelete(r -> r
406+
.channel(channelId)
407+
.ts(fileObj
408+
.getShares()
409+
.getPublicChannels().get(channelId).get(0)
410+
.getTs())
411+
);
412+
assertThat(response.getError(), is(nullValue()));
413+
assertThat(response.isOk(), is(true));
414+
}
415+
}
416+
417+
@Test
418+
public void createLongTextFile_v2_no_file_info() throws Exception {
419+
com.slack.api.model.File fileObj;
420+
{
421+
FilesUploadV2Response response = slack.methods(botToken).filesUploadV2(r -> r
422+
.content("test")
423+
.channel(channelId)
424+
.initialComment("initial comment")
425+
.filename("sample.txt")
426+
.title("file title")
427+
.requestFileInfo(false) // Added
428+
);
429+
assertThat(response.getError(), is(nullValue()));
430+
assertThat(response.isOk(), is(true));
431+
assertThat(response.getFile().getTitle(), is("file title"));
432+
assertThat(response.getFile().getName(), is(nullValue())); // this must be absent
394433

395434
// I know this is a bit long but this can be necessary for test stability
396435
Thread.sleep(10000L);

0 commit comments

Comments
 (0)