Skip to content

Commit c3f21a9

Browse files
committed
chore: reactons batch change verb to GET, fix tests
1 parent 2597669 commit c3f21a9

File tree

4 files changed

+36
-25
lines changed

4 files changed

+36
-25
lines changed

src/main/java/io/getstream/client/ReactionsClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.getstream.core.models.FeedID;
1313
import io.getstream.core.models.Paginated;
1414
import io.getstream.core.models.Reaction;
15+
import io.getstream.core.models.ReactionBatch;
1516
import io.getstream.core.options.Filter;
1617
import io.getstream.core.options.Limit;
1718
import io.getstream.core.utils.Auth.TokenAction;
@@ -33,7 +34,7 @@ public CompletableFuture<Reaction> get(String id) throws StreamException {
3334
return reactions.get(token, id);
3435
}
3536

36-
public CompletableFuture<List<Reaction>> getBatch(List<String> ids) throws StreamException {
37+
public CompletableFuture<ReactionBatch> getBatch(List<String> ids) throws StreamException {
3738
final Token token = buildReactionsToken(secret, TokenAction.READ);
3839
return reactions.getBatchReactions(token, ids);
3940
}

src/main/java/io/getstream/core/StreamReactions.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.getstream.core.models.FeedID;
1919
import io.getstream.core.models.Paginated;
2020
import io.getstream.core.models.Reaction;
21+
import io.getstream.core.models.ReactionBatch;
2122
import io.getstream.core.options.CustomQueryParameter;
2223
import io.getstream.core.options.Filter;
2324
import io.getstream.core.options.Limit;
@@ -343,28 +344,27 @@ public CompletableFuture<Void> restore(Token token, String id) throws StreamExce
343344
}
344345
}
345346

346-
347-
348-
public CompletableFuture<List<Reaction>> getBatchReactions(Token token, List<String> ids) throws StreamException {
347+
public CompletableFuture<ReactionBatch> getBatchReactions(Token token, List<String> ids) throws StreamException {
349348
checkNotNull(ids, "Reaction IDs can't be null");
350349
checkArgument(!ids.isEmpty(), "Reaction IDs can't be empty");
351350

352351
try {
353352
final URL url = buildGetReactionsBatchURL(baseURL);
354-
Map<String, List<String>> payload = ImmutableMap.of("ids", ids);
355-
final byte[] payloadBytes = toJSON(payload);
353+
RequestOption optionIds =
354+
new CustomQueryParameter(
355+
"ids", String.join(",", ids));
356356

357357
return httpClient
358-
.execute(buildPost(url, key, token, payloadBytes))
358+
.execute(buildGet(url, key, token, optionIds))
359359
.thenApply(
360360
response -> {
361361
try {
362-
return deserializeContainer(response, Reaction.class);
362+
return deserialize(response, ReactionBatch.class);
363363
} catch (StreamException | IOException e) {
364364
throw new CompletionException(e);
365365
}
366366
});
367-
} catch (JsonProcessingException | MalformedURLException | URISyntaxException e) {
367+
} catch (MalformedURLException | URISyntaxException e) {
368368
throw new StreamException(e);
369369
}
370370
}

src/main/java/io/getstream/core/models/ReactionBatch.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,29 @@
33
import com.fasterxml.jackson.annotation.JsonInclude;
44
import com.fasterxml.jackson.annotation.JsonProperty;
55

6+
import java.util.List;
7+
68
@JsonInclude(JsonInclude.Include.NON_NULL)
79
public class ReactionBatch {
810

911
@JsonProperty("reactions")
10-
private Reaction[] reactions;
12+
private List<Reaction> reactions;
13+
14+
@JsonProperty("duration")
15+
private String duration;
1116

1217
public ReactionBatch() {
1318
}
1419

15-
public ReactionBatch(Reaction[] reactions) {
20+
public ReactionBatch(List<Reaction> reactions) {
1621
this.reactions = reactions;
1722
}
1823

19-
public Reaction[] getReactions() {
24+
public List<Reaction> getReactions() {
2025
return reactions;
2126
}
2227

23-
public void setReactions(Reaction[] reactions) {
28+
public void setReactions(List<Reaction> reactions) {
2429
this.reactions = reactions;
2530
}
2631
}

src/test/java/io/getstream/client/ReactionsClientTest.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package io.getstream.client;
22

33
import io.getstream.core.LookupKind;
4-
import io.getstream.core.models.Activity;
5-
import io.getstream.core.models.FeedID;
6-
import io.getstream.core.models.Paginated;
7-
import io.getstream.core.models.Reaction;
4+
import io.getstream.core.models.*;
5+
86
import java.util.List;
7+
import java.util.Map;
8+
import java.util.function.Function;
9+
import java.util.stream.Collectors;
910

1011
import io.getstream.core.options.Filter;
1112
import io.getstream.core.options.Limit;
@@ -102,15 +103,19 @@ public void batchFetchReactions() throws Exception {
102103
Reaction r5=client.reactions().add("user2", "comment", activity.getID()).join();
103104
Reaction r6=client.reactions().add("user3", "comment", activity.getID()).join();
104105

105-
List<Reaction> result = client.reactions().getBatch(List.of(r1.getId(), r2.getId(), r3.getId(), r4.getId(), r5.getId(), r6.getId())).join();
106-
assertEquals(6, result.size());
106+
Map<String, Reaction> reactionsRequest = Map.of(r1.getId(), r1, r2.getId(), r2, r3.getId(), r3, r4.getId(), r4, r5.getId(), r5, r6.getId(), r6);
107+
108+
ReactionBatch response = client.reactions().getBatch(List.of(r1.getId(), r2.getId(), r3.getId(), r4.getId(), r5.getId(), r6.getId())).join();
109+
List<Reaction> result = response.getReactions();
107110

108-
assertEquals("like", result.get(0).getKind());
109-
assertEquals("comment", result.get(1).getKind());
110-
assertEquals("share", result.get(2).getKind());
111-
assertEquals("like", result.get(3).getKind());
112-
assertEquals("comment", result.get(4).getKind());
113-
assertEquals("comment", result.get(5).getKind());
111+
//convert result to map and compare each id and type mapping from reactionsRequest to result
112+
Map<String, Reaction> resultMap = result.stream().collect(Collectors.toMap(Reaction::getId, Function.identity()));
113+
assertEquals(6, resultMap.size());
114+
for (Reaction r : result) {
115+
Reaction req = reactionsRequest.get(r.getId());
116+
assertEquals(req.getActivityID(), r.getActivityID());
117+
assertEquals(req.getKind(), r.getKind());
118+
}
114119
}
115120

116121
@Test

0 commit comments

Comments
 (0)