Skip to content

Commit 7977b15

Browse files
author
Christopher Strauss
committed
chat endpoints
1 parent 267b0de commit 7977b15

File tree

5 files changed

+82
-0
lines changed

5 files changed

+82
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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.Objects;
7+
import org.springframework.http.ResponseEntity;
8+
import org.springframework.security.core.context.SecurityContextHolder;
9+
import org.springframework.stereotype.Controller;
10+
import org.springframework.web.bind.annotation.GetMapping;
11+
import org.springframework.web.bind.annotation.PathVariable;
12+
import org.springframework.web.bind.annotation.PostMapping;
13+
import org.springframework.web.bind.annotation.RequestBody;
14+
import org.springframework.web.bind.annotation.ResponseBody;
15+
16+
@Controller
17+
public class ChatController {
18+
19+
final Chats chats;
20+
21+
ChatController(Chats chats) {
22+
this.chats = chats;
23+
}
24+
25+
@ResponseBody
26+
@GetMapping("/api/chat/{id}")
27+
public Chat getChat(@PathVariable String id) {
28+
return chats.get(id);
29+
}
30+
31+
@PostMapping("/api/send_chat")
32+
public ResponseEntity<?> sendChat(@RequestBody ChatRequest chatRequest) {
33+
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
34+
String user = Objects.toString(principal);
35+
chats.put(new Chat(chatRequest.id(), new ChatMessage(chatRequest.message(), user)));
36+
return ResponseEntity.ok().build();
37+
}
38+
39+
}

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+
}
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 Chat(
4+
String id,
5+
ChatMessage chatMessage) {
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 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)