Skip to content

Commit 5d582f8

Browse files
committed
chore: add support for ranking variables in enriched feeds
1 parent 8e921a9 commit 5d582f8

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

src/main/java/io/getstream/core/options/EnrichmentFlags.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,24 @@
33
import static com.google.common.base.Preconditions.checkArgument;
44
import static com.google.common.base.Preconditions.checkNotNull;
55

6+
import com.fasterxml.jackson.databind.ObjectMapper;
67
import com.google.common.collect.Lists;
78
import io.getstream.core.http.Request;
9+
import java8.util.concurrent.CompletionException;
10+
11+
import java.io.IOException;
812
import java.util.List;
13+
import java.util.Map;
914

1015
public final class EnrichmentFlags implements RequestOption {
1116
enum OpType {
1217
OWN_CHILDREN("with_own_children"),
1318
OWN_REACTIONS("with_own_reactions"),
1419
REACTION_COUNTS("with_reaction_counts"),
15-
// XXX: move it to a separate option???
1620
REACTION_KINDS("reaction_kinds_filter"),
1721
RECENT_REACTIONS("with_recent_reactions"),
18-
RECENT_REACTIONS_LIMIT("recent_reactions_limit");
22+
RECENT_REACTIONS_LIMIT("recent_reactions_limit"),
23+
RANKING_VARS("ranking_vars");
1924

2025
private String operator;
2126

@@ -91,6 +96,23 @@ public EnrichmentFlags withUserChildren(String userID) {
9196
return this;
9297
}
9398

99+
public EnrichmentFlags rankingVars(Map<String, Object> externalVars) {
100+
checkNotNull(externalVars, "No external variables to filter by");
101+
checkArgument(externalVars.size() > 0, "No external variables to filter by");
102+
103+
String rankingVarsJSON;
104+
try {
105+
ObjectMapper objectMapper = new ObjectMapper();
106+
rankingVarsJSON = objectMapper.writeValueAsString(externalVars);
107+
}
108+
catch (IOException e){
109+
throw new CompletionException(e);
110+
}
111+
112+
ops.add(new OpEntry(OpType.RANKING_VARS, rankingVarsJSON));
113+
return this;
114+
}
115+
94116
@Override
95117
public void apply(Request.Builder builder) {
96118
for (OpEntry op : ops) {

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,18 @@
88
import io.getstream.core.models.EnrichedActivity;
99
import io.getstream.core.models.Group;
1010
import io.getstream.core.options.EnrichmentFlags;
11+
12+
import java.util.LinkedHashMap;
1113
import java.util.List;
14+
import java.util.Map;
15+
1216
import java8.util.concurrent.CompletionException;
1317
import okhttp3.OkHttpClient;
1418
import org.junit.Test;
1519

20+
import java.util.Map;
21+
import java.util.LinkedHashMap;
22+
1623
public class AggregatedFeedTest {
1724
private static final String apiKey =
1825
System.getenv("STREAM_KEY") != null
@@ -45,6 +52,25 @@ public void getEnrichedActivityGroups() throws Exception {
4552
.join();
4653
}
4754

55+
@Test
56+
public void getEnrichedRankingVars() throws Exception {
57+
Client client =
58+
Client.builder(apiKey, secret)
59+
.httpClient(new OKHTTPClientAdapter(new OkHttpClient()))
60+
.build();
61+
62+
Map<String, Object> mp = new LinkedHashMap();
63+
64+
mp.put("boolVal",true);
65+
mp.put("music",1);
66+
mp.put("sports",2.1);
67+
mp.put("string","str");
68+
69+
FlatFeed feed = client.flatFeed("flat", "1");
70+
71+
List<EnrichedActivity> result = feed.getEnrichedActivities(new EnrichmentFlags().rankingVars(mp)).join();
72+
}
73+
4874
@Test
4975
public void getCustomActivityGroups() throws Exception {
5076
Client client = Client.builder(apiKey, secret).build();

0 commit comments

Comments
 (0)