Skip to content

Commit 27c0dbf

Browse files
authored
Fix #1314 files.upload v2 method does not upload multiple files with full metadata (#1316)
1 parent c97f5aa commit 27c0dbf

File tree

4 files changed

+46
-9
lines changed

4 files changed

+46
-9
lines changed

json-logs/samples/api/files.completeUploadExternal.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,5 +128,10 @@
128128
],
129129
"error": "",
130130
"needed": "",
131-
"provided": ""
131+
"provided": "",
132+
"response_metadata": {
133+
"messages": [
134+
""
135+
]
136+
}
132137
}

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

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2233,23 +2233,26 @@ public FilesUploadV2Response filesUploadV2(FilesUploadV2Request req) throws IOEx
22332233
if (req.getUploadFiles() != null && req.getUploadFiles().size() > 0) {
22342234
// upload multiple files
22352235
for (FilesUploadV2Request.UploadFile uploadFile : req.getUploadFiles()) {
2236-
String fileId = helper.uploadFile(req, uploadFile);
2237-
2238-
FilesCompleteUploadExternalRequest.FileDetails file = new FilesCompleteUploadExternalRequest.FileDetails();
2239-
file.setId(fileId);
22402236
if (uploadFile.getTitle() != null) {
2241-
file.setTitle(uploadFile.getTitle());
2237+
uploadFile.setTitle(uploadFile.getTitle());
22422238
} else {
22432239
String filename = req.getFilename();
22442240
if (filename == null) {
2245-
if (req.getFile() != null && req.getFile().getName() != null) {
2246-
filename = req.getFile().getName();
2241+
if (uploadFile.getFile() != null && uploadFile.getFile().getName() != null) {
2242+
filename = uploadFile.getFile().getName();
22472243
} else {
22482244
filename = "Uploaded file";
22492245
}
22502246
}
2251-
file.setTitle(filename);
2247+
uploadFile.setFilename(filename);
2248+
uploadFile.setTitle(filename);
22522249
}
2250+
String fileId = helper.uploadFile(req, uploadFile);
2251+
2252+
FilesCompleteUploadExternalRequest.FileDetails file = new FilesCompleteUploadExternalRequest.FileDetails();
2253+
file.setId(fileId);
2254+
file.setTitle(uploadFile.getTitle());
2255+
22532256
files.add(file);
22542257
}
22552258
} else {

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -838,6 +838,7 @@ public void uploadInThreads_v2() throws Exception {
838838

839839
@Test
840840
public void issue824_gif_files() throws IOException, SlackApiException {
841+
loadRandomChannel();
841842
MethodsClient client = slack.methods(userToken);
842843
File file = new File("src/test/resources/slack-logo.gif");
843844
byte[] fileData = Files.readAllBytes(Paths.get(file.toURI()));
@@ -852,6 +853,7 @@ public void issue824_gif_files() throws IOException, SlackApiException {
852853

853854
@Test
854855
public void issue824_gif_files_v2() throws IOException, SlackApiException {
856+
loadRandomChannel();
855857
MethodsClient client = slack.methods(userToken);
856858
File file = new File("src/test/resources/slack-logo.gif");
857859
byte[] fileData = Files.readAllBytes(Paths.get(file.toURI()));
@@ -864,6 +866,33 @@ public void issue824_gif_files_v2() throws IOException, SlackApiException {
864866
assertThat(fileInfo.getError(), is(nullValue()));
865867
}
866868

869+
@Test
870+
public void issue1314_non_image_files_with_v2() throws IOException, SlackApiException {
871+
loadRandomChannel();
872+
MethodsClient client = slack.methods(botToken);
873+
File file = new File("src/test/resources/test.zip");
874+
FilesUploadV2Response upload = client.filesUploadV2(r -> r
875+
.file(file)
876+
.channel(channelId)
877+
.initialComment("Here you are!")
878+
);
879+
assertThat(upload.getError(), is(nullValue()));
880+
assertThat(upload.getFile().getName(), is("test.zip"));
881+
assertThat(upload.getFile().getTitle(), is("test.zip"));
882+
883+
FilesUploadV2Response upload2 = client.filesUploadV2(r -> r
884+
.uploadFiles(Arrays.asList(FilesUploadV2Request.UploadFile.builder()
885+
.file(file)
886+
.build()
887+
))
888+
.channel(channelId)
889+
.initialComment("Here you are!")
890+
);
891+
assertThat(upload2.getFiles().get(0).getName(), is("test.zip"));
892+
assertThat(upload2.getFiles().get(0).getTitle(), is("test.zip"));
893+
assertThat(upload2.getError(), is(nullValue()));
894+
}
895+
867896
@Test
868897
public void fileLinks() throws Exception {
869898
loadRandomChannelId();
838 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)