diff --git a/src/IModeration.cs b/src/IModeration.cs index 53dee6a..66f376f 100644 --- a/src/IModeration.cs +++ b/src/IModeration.cs @@ -6,7 +6,7 @@ namespace Stream { public interface IModeration { - Task FlagUserAsync(string flaggedUserId, string reason, IDictionary options = null); + Task FlagUserAsync(string flaggingUserID, string flaggedUserId, string reason, IDictionary options = null); Task FlagActivityAsync(string entityId, string entityCreatorId, string reason, IDictionary options = null); diff --git a/src/Moderation.cs b/src/Moderation.cs index e035c1f..82ee975 100644 --- a/src/Moderation.cs +++ b/src/Moderation.cs @@ -19,9 +19,9 @@ public Moderation(StreamClient client) _client = client; } - public async Task FlagUserAsync(string flaggedUserID, string reason, IDictionary options = null) + public async Task FlagUserAsync(string flaggingUserID, string flaggedUserID, string reason, IDictionary options = null) { - return await FlagAsync("stream:user", flaggedUserID, string.Empty, reason, options); + return await FlagAsync("stream:user", flaggedUserID, flaggingUserID, reason, options); } public async Task FlagActivityAsync(string entityId, string entityCreatorID, string reason, IDictionary options = null) @@ -45,7 +45,10 @@ public async Task FlagAsync(string entityType, string entityId, st var response = await _client.MakeRequestAsync(request); - return StreamJsonConverter.DeserializeObject(response.Content); + if (response.StatusCode == HttpStatusCode.Created) + return StreamJsonConverter.DeserializeObject(response.Content); + + throw StreamException.FromResponse(response); } } } \ No newline at end of file diff --git a/tests/ModerationTests.cs b/tests/ModerationTests.cs index d5744de..6ac4b22 100644 --- a/tests/ModerationTests.cs +++ b/tests/ModerationTests.cs @@ -63,29 +63,34 @@ public async Task TestReactionModeration() Assert.AreEqual("complete", response.Status); Assert.AreEqual("remove", response.RecommendedAction); - } [Test] public async Task TestFlagUser() { - var userId = Guid.NewGuid().ToString(); + var userId = "flagginguser"; var userData = new Dictionary { { "field", "value" }, { "is_admin", true }, }; - var u = await Client.Users.AddAsync(userId, userData); + var u = await Client.Users.AddAsync(userId, userData, true); Assert.NotNull(u); Assert.NotNull(u.CreatedAt); Assert.NotNull(u.UpdatedAt); - var response = await Client.Moderation.FlagUserAsync(userId, "blood"); + var response = await Client.Moderation.FlagUserAsync(userId, "flagged-user", "blood"); Assert.NotNull(response); } + [Test] + public async Task TestFlagUserError() + { + Assert.ThrowsAsync(async () => await Client.Moderation.FlagUserAsync("", string.Empty, "blood")); + } + [Test] public async Task TestFlagActivity() {