Skip to content

Commit 31b8373

Browse files
committed
Implement api for reporting messages
1 parent 9fc5816 commit 31b8373

4 files changed

Lines changed: 97 additions & 0 deletions

File tree

library/src/main/java/me/proxer/library/api/chat/ChatApi.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ public SendChatMessageEndpoint sendMessage(final String roomId, final String mes
4646
return new SendChatMessageEndpoint(internalApi, roomId, message);
4747
}
4848

49+
/**
50+
* Returns the respective endpoint.
51+
*/
52+
public ReportChatMessageEndpoint reportMessage(final String messageId, final String message) {
53+
return new ReportChatMessageEndpoint(internalApi, messageId, message);
54+
}
55+
4956
/**
5057
* Returns the respective endpoint.
5158
*/

library/src/main/java/me/proxer/library/api/chat/InternalApi.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ ProxerCall<List<ChatMessage>> messages(@Query("room_id") String roomId,
3434
ProxerCall<String> sendMessage(@Field("room_id") String roomId,
3535
@Field("message") String message);
3636

37+
@FormUrlEncoded
38+
@POST("chat/reportmessage")
39+
ProxerCall<String> reportMessage(@Field("message_id") String messageId,
40+
@Field("message") String message);
41+
3742
@GET("chat/roomusers")
3843
ProxerCall<List<ChatRoomUser>> roomUsers(@Query("room_id") String roomId);
3944
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package me.proxer.library.api.chat;
2+
3+
import lombok.experimental.Accessors;
4+
import me.proxer.library.api.Endpoint;
5+
import me.proxer.library.api.ProxerCall;
6+
7+
/**
8+
* Endpoint for reporting a message to the moderators.
9+
*
10+
* @author Ruben Gees
11+
*/
12+
@Accessors(fluent = true)
13+
public final class ReportChatMessageEndpoint implements Endpoint<String> {
14+
15+
private final InternalApi internalApi;
16+
17+
private final String messageId;
18+
private final String message;
19+
20+
ReportChatMessageEndpoint(final InternalApi internalApi, final String messageId, final String message) {
21+
this.internalApi = internalApi;
22+
this.messageId = messageId;
23+
this.message = message;
24+
}
25+
26+
/**
27+
* {@inheritDoc}
28+
*/
29+
@Override
30+
public ProxerCall<String> build() {
31+
return internalApi.reportMessage(messageId, message);
32+
}
33+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package me.proxer.library.api.chat;
2+
3+
import me.proxer.library.ProxerTest;
4+
import me.proxer.library.api.ProxerException;
5+
import okhttp3.mockwebserver.MockResponse;
6+
import org.junit.Test;
7+
8+
import java.io.IOException;
9+
10+
import static org.assertj.core.api.Assertions.assertThat;
11+
12+
/**
13+
* @author Ruben Gees
14+
*/
15+
public class ReportChatMessageEndpointTest extends ProxerTest {
16+
17+
@Test
18+
public void testDefault() throws ProxerException, IOException {
19+
server.enqueue(new MockResponse().setBody(fromResource("empty.json")));
20+
21+
final String result = api.chat()
22+
.reportMessage("123", "message")
23+
.build()
24+
.execute();
25+
26+
assertThat(result).isNull();
27+
}
28+
29+
@Test
30+
public void testPath() throws ProxerException, IOException, InterruptedException {
31+
server.enqueue(new MockResponse().setBody(fromResource("empty.json")));
32+
33+
api.chat().reportMessage("123", "message")
34+
.build()
35+
.execute();
36+
37+
assertThat(server.takeRequest().getPath())
38+
.isEqualTo("/api/v1/chat/reportmessage");
39+
}
40+
41+
@Test
42+
public void testParameters() throws ProxerException, IOException, InterruptedException {
43+
server.enqueue(new MockResponse().setBody(fromResource("empty.json")));
44+
45+
api.chat().reportMessage("312", "someMessage")
46+
.build()
47+
.execute();
48+
49+
assertThat(server.takeRequest().getBody().readUtf8())
50+
.isEqualTo("message_id=312&message=someMessage");
51+
}
52+
}

0 commit comments

Comments
 (0)