Skip to content

Commit 19a4196

Browse files
author
Christopher Strauss
committed
chat endpoints
1 parent 9abd725 commit 19a4196

File tree

6 files changed

+101
-8
lines changed

6 files changed

+101
-8
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.bernd;
2+
3+
import com.bernd.model.Chat;
4+
import com.bernd.model.ChatMessage;
5+
import com.bernd.model.ChatRequest;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
import java.util.Objects;
9+
import org.springframework.http.ResponseEntity;
10+
import org.springframework.messaging.core.MessageSendingOperations;
11+
import org.springframework.security.core.context.SecurityContextHolder;
12+
import org.springframework.stereotype.Controller;
13+
import org.springframework.web.bind.annotation.GetMapping;
14+
import org.springframework.web.bind.annotation.PathVariable;
15+
import org.springframework.web.bind.annotation.PostMapping;
16+
import org.springframework.web.bind.annotation.RequestBody;
17+
import org.springframework.web.bind.annotation.ResponseBody;
18+
19+
@Controller
20+
public class ChatController {
21+
22+
private final Chats chats;
23+
private final MessageSendingOperations<String> operations;
24+
25+
ChatController(
26+
Chats chats,
27+
MessageSendingOperations<String> operations) {
28+
this.chats = chats;
29+
this.operations = operations;
30+
}
31+
32+
@ResponseBody
33+
@GetMapping("/api/chat/{id}")
34+
public Chat getChat(@PathVariable String id) {
35+
return chats.get(id);
36+
}
37+
38+
@PostMapping("/api/send_chat")
39+
public ResponseEntity<?> sendChat(@RequestBody ChatRequest chatRequest) {
40+
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
41+
String user = Objects.toString(principal);
42+
ChatMessage message = new ChatMessage(chatRequest.message(), user);
43+
Chat chat = chats.get(chatRequest.id());
44+
if (chat != null) {
45+
chat.messages().add(message);
46+
} else {
47+
List<ChatMessage> messages = new ArrayList<>();
48+
messages.add(message);
49+
chat = new Chat(chatRequest.id(), messages);
50+
}
51+
chats.put(chat);
52+
operations.convertAndSend("/topic/chat/" + chat.id(), chat);
53+
return ResponseEntity.ok().build();
54+
}
55+
56+
}

src/main/java/com/bernd/Chats.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.bernd;
2+
3+
import com.bernd.model.Chat;
4+
import java.util.LinkedHashMap;
5+
import java.util.List;
6+
import java.util.Map;
7+
import org.springframework.stereotype.Component;
8+
9+
@Component
10+
public class Chats {
11+
private final Map<String, Chat> map = new LinkedHashMap<>();
12+
13+
Chat get(String id) {
14+
return map.get(id);
15+
}
16+
17+
Chat put(Chat chat) {
18+
map.put(chat.id(), chat);
19+
return chat;
20+
}
21+
22+
List<Chat> chats() {
23+
return List.copyOf(map.values());
24+
}
25+
}

src/main/java/com/bernd/game/MoveList.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,6 @@ public final class MoveList {
1616
private static final int PASS = 0x2000;
1717
private static final int DATA = 0x0fff;
1818

19-
public static void main(String[] args) {
20-
int n = 1024 * 4;
21-
System.out.printf("%x\n", n);
22-
System.out.println(n);
23-
System.out.printf("%x\n", 2 * n);
24-
System.out.println(2 * n);
25-
}
26-
2719
private int pos;
2820
private int capacity;
2921
private final int dim;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.bernd.model;
2+
3+
import java.util.List;
4+
5+
public record Chat(
6+
String id,
7+
List<ChatMessage> messages) {
8+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.bernd.model;
2+
3+
public record ChatMessage(
4+
String message,
5+
String user) {
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.bernd.model;
2+
3+
public record ChatRequest(
4+
String message,
5+
String id) {
6+
}

0 commit comments

Comments
 (0)