Skip to content

Commit

Permalink
chat endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
Christopher Strauss committed Aug 2, 2024
1 parent 9abd725 commit 19a4196
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 8 deletions.
56 changes: 56 additions & 0 deletions src/main/java/com/bernd/ChatController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package com.bernd;

import com.bernd.model.Chat;
import com.bernd.model.ChatMessage;
import com.bernd.model.ChatRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import org.springframework.http.ResponseEntity;
import org.springframework.messaging.core.MessageSendingOperations;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class ChatController {

private final Chats chats;
private final MessageSendingOperations<String> operations;

ChatController(
Chats chats,
MessageSendingOperations<String> operations) {
this.chats = chats;
this.operations = operations;
}

@ResponseBody
@GetMapping("/api/chat/{id}")
public Chat getChat(@PathVariable String id) {
return chats.get(id);
}

@PostMapping("/api/send_chat")
public ResponseEntity<?> sendChat(@RequestBody ChatRequest chatRequest) {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
String user = Objects.toString(principal);
ChatMessage message = new ChatMessage(chatRequest.message(), user);
Chat chat = chats.get(chatRequest.id());
if (chat != null) {
chat.messages().add(message);
} else {
List<ChatMessage> messages = new ArrayList<>();
messages.add(message);
chat = new Chat(chatRequest.id(), messages);
}
chats.put(chat);
operations.convertAndSend("/topic/chat/" + chat.id(), chat);
return ResponseEntity.ok().build();
}

}
25 changes: 25 additions & 0 deletions src/main/java/com/bernd/Chats.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.bernd;

import com.bernd.model.Chat;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Component;

@Component
public class Chats {
private final Map<String, Chat> map = new LinkedHashMap<>();

Chat get(String id) {
return map.get(id);
}

Chat put(Chat chat) {
map.put(chat.id(), chat);
return chat;
}

List<Chat> chats() {
return List.copyOf(map.values());
}
}
8 changes: 0 additions & 8 deletions src/main/java/com/bernd/game/MoveList.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,6 @@ public final class MoveList {
private static final int PASS = 0x2000;
private static final int DATA = 0x0fff;

public static void main(String[] args) {
int n = 1024 * 4;
System.out.printf("%x\n", n);
System.out.println(n);
System.out.printf("%x\n", 2 * n);
System.out.println(2 * n);
}

private int pos;
private int capacity;
private final int dim;
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/com/bernd/model/Chat.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.bernd.model;

import java.util.List;

public record Chat(
String id,
List<ChatMessage> messages) {
}
6 changes: 6 additions & 0 deletions src/main/java/com/bernd/model/ChatMessage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.bernd.model;

public record ChatMessage(
String message,
String user) {
}
6 changes: 6 additions & 0 deletions src/main/java/com/bernd/model/ChatRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.bernd.model;

public record ChatRequest(
String message,
String id) {
}

0 comments on commit 19a4196

Please sign in to comment.