-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTopicSelectionHandler.java
50 lines (40 loc) · 1.58 KB
/
TopicSelectionHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package server.handler;
import com.google.gson.JsonObject;
import java.io.PrintWriter;
import server.enums.Topic;
import server.manager.RoomManager;
import server.model.Room;
import server.util.ResponseBuilder;
public class TopicSelectionHandler implements RequestHandler {
private final RoomManager roomManager;
public TopicSelectionHandler(RoomManager roomManager) {
this.roomManager = roomManager;
}
@Override
public void handleRequest(JsonObject request, PrintWriter writer) {
int roomId = request.get("roomId").getAsInt();
String topic = request.get("topic").getAsString();
Room room = roomManager.getRoom(roomId);
// 방이 존재하지 않는 경우
if (room == null) {
JsonObject errorResponse = new ResponseBuilder(5, "5001", "존재하지 않는 방 ID입니다.")
.build();
writer.println(errorResponse.toString());
return;
}
// 주제가 존재하지 않는 경우
if (Topic.fromValue(topic) == null) {
JsonObject errorResponse = new ResponseBuilder(5, "5002", "존재하지 않는 주제입니다.")
.build();
writer.println(errorResponse.toString());
return;
}
// 주제 선택 성공
JsonObject data = new JsonObject();
data.addProperty("topic", topic);
JsonObject successResponse = new ResponseBuilder(5, "success", "성공")
.withData(data)
.build();
room.broadcastMessage(successResponse.toString());
}
}