Skip to content

Commit c199862

Browse files
committed
Implement send message for the chat
1 parent 76fc959 commit c199862

4 files changed

Lines changed: 102 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
@@ -31,4 +31,11 @@ public PublicChatRoomsEndpoint publicRooms() {
3131
public ChatMessagesEndpoint messages(final String roomId) {
3232
return new ChatMessagesEndpoint(internalApi, roomId);
3333
}
34+
35+
/**
36+
* Returns the respective endpoint.
37+
*/
38+
public SendChatMessageEndpoint sendMessage(final String roomId, final String message) {
39+
return new SendChatMessageEndpoint(internalApi, roomId, message);
40+
}
3441
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
import me.proxer.library.api.ProxerCall;
44
import me.proxer.library.entity.chat.ChatMessage;
55
import me.proxer.library.entity.chat.ChatRoom;
6+
import retrofit2.http.Field;
7+
import retrofit2.http.FormUrlEncoded;
68
import retrofit2.http.GET;
9+
import retrofit2.http.POST;
710
import retrofit2.http.Query;
811

912
import javax.annotation.ParametersAreNullableByDefault;
@@ -21,4 +24,9 @@ public interface InternalApi {
2124
@GET("chat/messages")
2225
ProxerCall<List<ChatMessage>> messages(@Query("room_id") String roomId,
2326
@Query("message_id") String messageId);
27+
28+
@FormUrlEncoded
29+
@POST("chat/newmessage")
30+
ProxerCall<String> sendMessage(@Field("room_id") String roomId,
31+
@Field("message") String message);
2432
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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 sending a single message in a {@link me.proxer.library.entity.chat.ChatRoom}.
9+
* <p>
10+
* Upon success, the id of the message is returned.
11+
*
12+
* @author Ruben Gees
13+
*/
14+
@Accessors(fluent = true)
15+
public final class SendChatMessageEndpoint implements Endpoint<String> {
16+
17+
private final InternalApi internalApi;
18+
19+
private final String roomId;
20+
private final String message;
21+
22+
SendChatMessageEndpoint(final InternalApi internalApi, final String roomId, final String message) {
23+
this.internalApi = internalApi;
24+
this.roomId = roomId;
25+
this.message = message;
26+
}
27+
28+
/**
29+
* {@inheritDoc}
30+
*/
31+
@Override
32+
public ProxerCall<String> build() {
33+
return internalApi.sendMessage(roomId, message);
34+
}
35+
}
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 SendChatMessageEndpointTest 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+
.sendMessage("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().sendMessage("123", "message")
34+
.build()
35+
.execute();
36+
37+
assertThat(server.takeRequest().getPath())
38+
.isEqualTo("/api/v1/chat/newmessage");
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().sendMessage("312", "someMessage")
46+
.build()
47+
.execute();
48+
49+
assertThat(server.takeRequest().getBody().readUtf8())
50+
.isEqualTo("room_id=312&message=someMessage");
51+
}
52+
}

0 commit comments

Comments
 (0)