Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions src/main/java/io/getstream/core/models/EnrichedActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ public class EnrichedActivity {
private final Map<String, List<Reaction>> ownReactions;
private final Map<String, List<Reaction>> latestReactions;
private final Map<String, Object> extra;
private final String moderationTemplate;
private final ModerationResponse moderationResponse;

private EnrichedActivity(Builder builder) {
id = builder.id;
Expand All @@ -51,6 +53,8 @@ private EnrichedActivity(Builder builder) {
ownReactions = builder.ownReactions;
latestReactions = builder.latestReactions;
extra = builder.extra;
moderationTemplate = builder.moderationTemplate;
moderationResponse = builder.moderationResponse;
}

public String getID() {
Expand Down Expand Up @@ -114,6 +118,16 @@ public Map<String, List<Reaction>> getLatestReactions() {
return latestReactions;
}

@JsonProperty("moderation")
public ModerationResponse getModerationResponse() {
return moderationResponse;
}

@JsonProperty("moderation_template")
public String getModerationTemplate() {
return moderationTemplate;
}

@JsonAnyGetter
public Map<String, Object> getExtra() {
return extra;
Expand Down Expand Up @@ -158,6 +172,8 @@ public String toString() {
.add("ownReactions", this.ownReactions)
.add("latestReactions", this.latestReactions)
.add("reactionCounts", this.reactionCounts)
.add("moderationTemplate", this.moderationTemplate)
.add("moderationResponse", this.moderationResponse)
.add("extra", this.extra)
.toString();
}
Expand All @@ -182,6 +198,8 @@ public static final class Builder {
private Map<String, List<Reaction>> ownReactions;
private Map<String, List<Reaction>> latestReactions;
private Map<String, Object> extra;
private String moderationTemplate;
private ModerationResponse moderationResponse;

public Builder id(String id) {
this.id = id;
Expand Down Expand Up @@ -294,6 +312,18 @@ public Builder reactionCounts(Map<String, Number> reactionCounts) {
return this;
}

@JsonProperty("moderation_template")
public Builder moderationTemplate(String moderationTemplate) {
this.moderationTemplate = moderationTemplate;
return this;
}

@JsonProperty("moderation")
public Builder moderationResponse(ModerationResponse moderationResponse) {
this.moderationResponse = moderationResponse;
return this;
}

@JsonAnySetter
public Builder extraField(String key, Object value) {
if (extra == null) {
Expand Down Expand Up @@ -326,6 +356,8 @@ public Builder fromEnrichedActivity(EnrichedActivity activity) {
this.ownReactions = activity.ownReactions;
this.latestReactions = activity.latestReactions;
this.reactionCounts = activity.reactionCounts;
this.moderationTemplate = activity.moderationTemplate;
this.moderationResponse = activity.moderationResponse;
this.extra = activity.extra;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package io.getstream.client;

import static org.junit.Assert.*;

import io.getstream.core.http.OKHTTPClientAdapter;
import io.getstream.core.models.*;
import io.getstream.core.options.EnrichmentFlags;
import java.util.Date;
import java.util.List;
import okhttp3.OkHttpClient;
import org.junit.Before;
import org.junit.Test;

public class EnrichedActivityModerationIT {

private static final String apiKey =
System.getenv("STREAM_KEY") != null
? System.getenv("STREAM_KEY")
: System.getProperty("STREAM_KEY");
private static final String secret =
System.getenv("STREAM_SECRET") != null
? System.getenv("STREAM_SECRET")
: System.getProperty("STREAM_SECRET");

private Client client;

@Before
public void setUp() throws Exception {
client =
Client.builder(apiKey, secret)
.httpClient(new OKHTTPClientAdapter(new OkHttpClient()))
.build();
}

@Test
public void testEnrichedActivityModerationFields() throws Exception {
// Create a feed to work with
FlatFeed feed = client.flatFeed("user", "test-moderation123");

// Create an activity with moderation template and text that should trigger moderation
Activity activity =
Activity.builder()
.actor("test-user")
.verb("post")
.object("test-object")
.moderationTemplate("moderation_template_activity")
.extraField("text", "good-text") // Using the term that triggers moderation in ModerationClientTest
.foreignID("test-" + System.currentTimeMillis())
.time(new Date())
.build();

// Add activity to feed
Activity addedActivity = feed.addActivity(activity).join();
assertNotNull(addedActivity);

// Verify the Activity has moderation fields
ModerationResponse activityModeration = addedActivity.getModerationResponse();
assertNotNull(activityModeration);
assertEquals("complete", activityModeration.getStatus());
assertEquals("keep", activityModeration.getRecommendedAction());

// Get enriched activities to verify moderation fields are included
List<EnrichedActivity> enrichedActivities =
feed.getEnrichedActivities(new EnrichmentFlags()).join();

// Find our activity in the list
EnrichedActivity enrichedActivity = null;
for (EnrichedActivity ea : enrichedActivities) {
if (ea.getID().equals(addedActivity.getID())) {
enrichedActivity = ea;
break;
}
}

assertNotNull("Could not find the added activity in enriched activities", enrichedActivity);

// Verify the EnrichedActivity has moderation fields
ModerationResponse enrichedModeration = enrichedActivity.getModerationResponse();
assertNotNull("EnrichedActivity should have moderation fields", enrichedModeration);
assertEquals("complete", enrichedModeration.getStatus());
assertEquals("keep", enrichedModeration.getRecommendedAction());
assertEquals("moderation_template_activity", enrichedActivity.getModerationTemplate());

// Clean up
feed.removeActivityByID(addedActivity.getID()).join();
}
}
Loading