Skip to content

Commit a244bde

Browse files
committed
chore: add moderation template to reactions
1 parent fe94dcf commit a244bde

4 files changed

Lines changed: 114 additions & 18 deletions

File tree

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,9 @@ public CompletableFuture<Reaction> add(
235235
if (reaction.getExtra() != null) {
236236
payloadBuilder.put("data", reaction.getExtra());
237237
}
238+
if (reaction.getModerationTemplate() != null) {
239+
payloadBuilder.put("moderation_template", reaction.getModerationTemplate());
240+
}
238241
final byte[] payload = toJSON(payloadBuilder.build());
239242
final URL url = buildReactionsURL(baseURL);
240243
return httpClient

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public String getOriginFeed() {
4545
class APIError {
4646
private String Code;
4747
private String Message;
48+
private String Status;
4849

4950
// Default constructor
5051
public APIError() {}
@@ -53,9 +54,11 @@ public APIError() {}
5354
@JsonCreator
5455
public APIError(
5556
@JsonProperty("code") String code,
56-
@JsonProperty("message") String message) {
57+
@JsonProperty("message") String message,
58+
@JsonProperty("status") String status) {
5759
this.Code = code;
5860
this.Message = message;
61+
this.Status = status;
5962
}
6063

6164
// Getters

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

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class Reaction {
2727
private final Data userData;
2828
private final Map<String, Object> activityData;
2929
private final Map<String, Object> extra;
30+
private String moderationTemplate;
31+
private Map<String, Object> moderation;
3032

3133
private Reaction(Builder builder) {
3234
id = builder.id;
@@ -41,6 +43,8 @@ private Reaction(Builder builder) {
4143
userData = builder.userData;
4244
activityData = builder.activityData;
4345
extra = builder.extra;
46+
moderationTemplate = builder.moderationTemplate;
47+
moderation = builder.moderation;
4448
}
4549

4650
public String getId() {
@@ -95,6 +99,29 @@ public Map<String, Object> getExtra() {
9599
return extra;
96100
}
97101

102+
@JsonProperty("moderation_template")
103+
public String getModerationTemplate() {
104+
return moderationTemplate;
105+
}
106+
107+
public void setModerationTemplate(String moderationTemplate) {
108+
this.moderationTemplate = moderationTemplate;
109+
}
110+
111+
@JsonProperty("moderation")
112+
public Map<String, Object> getModeration() {
113+
return moderation;
114+
}
115+
116+
public ModerationResponse getModerationResponseFromMap()throws Exception {
117+
String key = "response";
118+
if (moderation != null && moderation.containsKey(key)) {
119+
return convert(moderation.get(key), ModerationResponse.class);
120+
} else {
121+
throw new Exception("Key '" + key + "' not found in moderation map.");
122+
}
123+
}
124+
98125
@Override
99126
public boolean equals(Object o) {
100127
if (this == o) return true;
@@ -111,7 +138,9 @@ public boolean equals(Object o) {
111138
&& Objects.equals(childrenCounts, reaction.childrenCounts)
112139
&& Objects.equals(userData, reaction.userData)
113140
&& Objects.equals(activityData, reaction.activityData)
114-
&& Objects.equals(extra, reaction.extra);
141+
&& Objects.equals(extra, reaction.extra)
142+
&& Objects.equals(moderationTemplate, reaction.moderationTemplate)
143+
&& Objects.equals(moderation, reaction.moderation);
115144
}
116145

117146
@Override
@@ -128,7 +157,9 @@ public int hashCode() {
128157
childrenCounts,
129158
userData,
130159
activityData,
131-
extra);
160+
extra,
161+
moderationTemplate,
162+
moderation);
132163
}
133164

134165
@Override
@@ -146,6 +177,8 @@ public String toString() {
146177
.add("userData", this.userData)
147178
.add("activityData", this.activityData)
148179
.add("extra", this.extra)
180+
.add("moderationTemplate", this.moderationTemplate)
181+
.add("moderation", this.moderation)
149182
.toString();
150183
}
151184

@@ -167,6 +200,8 @@ public static final class Builder {
167200
private Data userData;
168201
private Map<String, Object> activityData;
169202
private Map<String, Object> extra;
203+
private String moderationTemplate;
204+
private Map<String, Object> moderation;
170205

171206
public Builder id(String id) {
172207
this.id = id;
@@ -239,6 +274,18 @@ public Builder activityData(Map<String, Object> activityData) {
239274
return this;
240275
}
241276

277+
@JsonProperty("moderation_template")
278+
public Builder moderationTemplate(String moderationTemplate) {
279+
this.moderationTemplate = moderationTemplate;
280+
return this;
281+
}
282+
283+
@JsonProperty("moderation")
284+
public Builder moderation(Map<String, Object> moderation) {
285+
this.moderation = moderation;
286+
return this;
287+
}
288+
242289
@JsonIgnore
243290
public Builder extra(Map<String, Object> extra) {
244291
this.extra = extra;
@@ -259,6 +306,8 @@ public Builder fromReaction(Reaction reaction) {
259306
this.userData = reaction.userData;
260307
this.activityData = reaction.activityData;
261308
this.extra = reaction.extra;
309+
this.moderationTemplate = reaction.moderationTemplate;
310+
this.moderation = reaction.moderation;
262311
return this;
263312
}
264313

@@ -271,4 +320,4 @@ public Reaction build() {
271320
return new Reaction(this);
272321
}
273322
}
274-
}
323+
}

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

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

3-
import io.getstream.client.Client;
4-
import io.getstream.client.ModerationClient;
53
import io.getstream.core.models.*;
64
import io.getstream.core.models.Activity;
75
import io.getstream.core.http.Response;
86
import static org.junit.Assert.*;
9-
10-
11-
import java.net.MalformedURLException;
127
import java.util.Date;
13-
import java.util.HashMap;
14-
import java.util.Map;
158
import java.util.UUID;
16-
import java.util.concurrent.CompletableFuture;
179
import org.junit.*;
1810

19-
2011
public class ModerationClientTest {
2112

2213
private static final String apiKey =
@@ -28,10 +19,32 @@ public class ModerationClientTest {
2819
? System.getenv("STREAM_SECRET")
2920
: System.getProperty("STREAM_SECRET");
3021

22+
Client client;
23+
@Before
24+
public void setUp()throws Exception {
25+
26+
System.out.println("api key-------------------------------------------------");
27+
System.out.println(addSpacesAfterEachChar(apiKey));
28+
// client =
29+
// Client.builder(apiKey, secret)
30+
// .scheme("http")
31+
// .host("localhost")
32+
// .port(18000)
33+
// .build();
34+
client= Client.builder(apiKey, secret).build();
35+
}
36+
public static String addSpacesAfterEachChar(String str) {
37+
StringBuilder stringBuilder = new StringBuilder(); // Using StringBuilder for efficiency
38+
39+
for (int i = 0; i < str.length(); i++) {
40+
stringBuilder.append(str.charAt(i)); // Append the character
41+
stringBuilder.append(' '); // Append a space
42+
}
3143

44+
return stringBuilder.toString().trim(); // Convert to string and remove the trailing space
45+
}
3246
@Test
3347
public void testFlagUser() throws Exception {
34-
Client client = Client.builder(apiKey, secret).build();
3548

3649
ModerationClient moderationClient = client.moderation();
3750

@@ -46,7 +59,6 @@ public void testFlagUser() throws Exception {
4659

4760
@Test
4861
public void testFlagActivity() throws Exception {
49-
Client client = Client.builder(apiKey, secret).build();
5062
ModerationClient moderationClient = client.moderation();
5163

5264
Activity activity = Activity.builder().actor("test").verb("test").object("test").build();
@@ -60,7 +72,6 @@ public void testFlagActivity() throws Exception {
6072

6173
@Test
6274
public void testFlagReaction() throws Exception {
63-
Client client = Client.builder(apiKey, secret).build();
6475
ModerationClient moderationClient = client.moderation();
6576

6677
Activity activity = Activity.builder().actor("test").verb("test").object("test").build();
@@ -77,8 +88,6 @@ public void testFlagReaction() throws Exception {
7788
@Test
7889
public void testActivityModerated() throws Exception {
7990

80-
Client client = Client.builder(apiKey, secret).build();
81-
8291
ModerationClient moderationClient = client.moderation();
8392

8493
String[] images = new String[] { "image1", "image2" };
@@ -99,4 +108,36 @@ public void testActivityModerated() throws Exception {
99108
assertEquals(m.getStatus(), "complete");
100109
assertEquals(m.getRecommendedAction(), "remove");
101110
}
111+
@Test
112+
public void testActivityModeratedReactions() throws Exception {
113+
114+
ModerationClient moderationClient = client.moderation();
115+
116+
String[] images = new String[] { "image1", "image2" };
117+
Activity activity = Activity.builder().
118+
actor("test").
119+
verb("test").
120+
object("test").
121+
extraField("text", "pissoar").
122+
extraField("attachment", images).
123+
foreignID("for").
124+
time(new Date()).
125+
build();
126+
127+
Activity activityResponse = client.flatFeed("user", "1").addActivity(activity).join();
128+
assertNotNull(activityResponse);
129+
130+
Reaction r=Reaction.builder().
131+
kind("like").
132+
activityID(activityResponse.getID()).
133+
userID("user123").
134+
extraField("p","pissoar").
135+
moderationTemplate("reaction_test_7").
136+
build();
137+
138+
Reaction reactionResponse = client.reactions().add("user", r).join();
139+
ModerationResponse m=reactionResponse.getModerationResponseFromMap();
140+
assertEquals(m.getStatus(), "complete");
141+
assertEquals(m.getRecommendedAction(), "remove");
142+
}
102143
}

0 commit comments

Comments
 (0)