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
19 changes: 10 additions & 9 deletions src/main/java/io/getstream/client/ModerationClient.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.getstream.client;

import static io.getstream.core.utils.Auth.buildModerationToken;
import static io.getstream.core.utils.Auth.buildReactionsToken;
import static io.getstream.core.utils.Routes.*;
import static io.getstream.core.utils.Serialization.*;
Expand All @@ -22,30 +23,30 @@ public class ModerationClient {
}

public CompletableFuture<Response> flagUser(
String flaggedUserId, String reason, Map<String, Object> options) throws StreamException {
return flag("stream:user", flaggedUserId, "", reason, options);
String flaggedUserId,String reportingUser, String reason, Map<String, Object> options) throws StreamException {
return flag("stream:user", flaggedUserId, reportingUser, reason, options);
}

public CompletableFuture<Response> flagActivity(
String entityId, String entityCreatorId, String reason, Map<String, Object> options)
String entityId, String reportingUser, String reason, Map<String, Object> options)
throws StreamException {
return flag("stream:feeds:v2:activity", entityId, entityCreatorId, reason, options);
return flag("stream:feeds:v2:activity", entityId, reportingUser, reason, options);
}

public CompletableFuture<Response> flagReaction(
String entityId, String entityCreatorId, String reason, Map<String, Object> options)
String entityId, String reportingUser, String reason, Map<String, Object> options)
throws StreamException {
return flag("stream:feeds:v2:reaction", entityId, entityCreatorId, reason, options);
return flag("stream:feeds:v2:reaction", entityId, reportingUser, reason, options);
}

private CompletableFuture<Response> flag(
String entityType,
String entityId,
String entityCreatorId,
String reportingUser,
String reason,
Map<String, Object> options)
throws StreamException {
final Token token = buildReactionsToken(secret, Auth.TokenAction.WRITE);
return mod.flag(token, entityType, entityId, entityCreatorId, reason, options);
final Token token = buildModerationToken(secret, Auth.TokenAction.WRITE);
return mod.flag(token, entityType, entityId, reportingUser, reason, options);
}
}
12 changes: 6 additions & 6 deletions src/main/java/io/getstream/core/Moderation.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,18 @@ public CompletableFuture<Response> flag(
Token token,
String entityType,
String entityId,
String entityCreatorId,
String reason,
String reportingUser,
String Reason,
Map<String, Object> options)
throws StreamException {
try {
final byte[] payload =
toJSON(
new Object() {
public final String UserId = entityCreatorId;
public final String EntityType = entityType;
public final String EntityId = entityId;
public final String Reason = reason;
public final String user_id = reportingUser;
public final String entity_type = entityType;
public final String entity_id = entityId;
public final String reason = Reason;
});

final URL url = buildModerationFlagURL(baseURL);
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/io/getstream/core/utils/Auth.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ public enum TokenResource {
OPEN_GRAPH("url"),
PERSONALIZATION("personalization"),
REACTIONS("reactions"),
USERS("users");
USERS("users"),
MODERATION("moderation");

private final String resource;

Expand Down Expand Up @@ -98,6 +99,10 @@ public static Token buildReactionsToken(String secret, TokenAction action) {
return buildBackendToken(secret, TokenResource.REACTIONS, action, "*");
}

public static Token buildModerationToken(String secret, TokenAction action) {
return buildBackendToken(secret, TokenResource.MODERATION, action, "*");
}

public static Token buildAnalyticsToken(String secret, TokenAction action) {
return buildBackendToken(secret, TokenResource.ANALYTICS, action, "*");
}
Expand Down
40 changes: 22 additions & 18 deletions src/test/java/io/getstream/client/ModerationClientTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import io.getstream.core.http.Response;
import io.getstream.core.models.*;
import io.getstream.core.models.Activity;

import java.sql.Time;
import java.util.Date;
import java.util.UUID;
import org.junit.*;
Expand All @@ -28,49 +30,51 @@ public void setUp() throws Exception {
}

@Test
public void testFlagUser() throws Exception {

public void testFlagActivity() throws Exception {
ModerationClient moderationClient = client.moderation();

String userId = UUID.randomUUID().toString();
User user = client.user(userId);
user.getOrCreate().join();
Data result = user.get().join();
Activity activity = Activity.builder().actor("bad-user").verb("test").object("test").moderationTemplate("moderation_template_activity").time(new Date()).foreignID("fid").build();
Activity activityResponse = client.flatFeed("user", "1").addActivity(activity).join();

Response flagResponse = moderationClient.flagUser(userId, "blood", null).join();
String reportingUser="reporting-user";
Activity activity1 = Activity.builder().actor(reportingUser).verb("verb").object("test").moderationTemplate("moderation_template_activity").time(new Date()).foreignID("fid").build();
Activity activityResponse1 = client.flatFeed("user", "1").addActivity(activity1).join();
assertNotNull(activityResponse);

Response flagResponse =
moderationClient.flagActivity(activityResponse.getID(), reportingUser, "blood", null).join();
assertNotNull(flagResponse);
assertEquals(201, flagResponse.getCode());
}

@Test
public void testFlagActivity() throws Exception {
ModerationClient moderationClient = client.moderation();

Activity activity = Activity.builder().actor("test").verb("test").object("test").build();
public void testFlagUser() throws Exception {

Activity activityResponse = client.flatFeed("flat", "1").addActivity(activity).join();
assertNotNull(activityResponse);
ModerationClient moderationClient = client.moderation();

Response flagResponse =
moderationClient.flagActivity(activityResponse.getID(), "vishal", "blood", null).join();
Response flagResponse = moderationClient.flagUser("bad-user", "reporting-user", "blood", null).join();
assertNotNull(flagResponse);
assertEquals(201, flagResponse.getCode());
}

@Test
public void testFlagReaction() throws Exception {
ModerationClient moderationClient = client.moderation();

Activity activity = Activity.builder().actor("test").verb("test").object("test").build();
Activity activity = Activity.builder().actor("bad-user").verb("test").object("test").moderationTemplate("moderation_template_reaction").time(new Date()).foreignID("fid").build();

Activity activityResponse = client.flatFeed("flat", "1").addActivity(activity).join();
assertNotNull(activityResponse);

Reaction reactionResponse =
client.reactions().add("user123", "like", activityResponse.getID()).join();
client.reactions().add("bad-user", "like", activityResponse.getID()).join();
assertNotNull(reactionResponse);

Response flagResponse =
moderationClient.flagReaction(reactionResponse.getId(), "bobby", "blood", null).join();
moderationClient.flagReaction(reactionResponse.getId(), "reporting-user", "blood", null).join();
assertNotNull(flagResponse);
assertEquals(201, flagResponse.getCode());

}

@Test
Expand Down
Loading