X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchatroom%2Fapi%2FChatroomController.java;h=21773c1ac37368cdbd0d094af1559b9c4b9508d7;hb=db92f29c1ee7e67b8ed9e9cc7eafff00ae4a57f0;hp=e3146a9d0739bbafef3a88747b8a5c9346a77912;hpb=4ae2e9d8513fa6a774e03d5a6581d6807d9f0720;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chatroom/api/ChatroomController.java b/src/main/java/de/juplo/kafka/chatroom/api/ChatroomController.java index e3146a9d..21773c1a 100644 --- a/src/main/java/de/juplo/kafka/chatroom/api/ChatroomController.java +++ b/src/main/java/de/juplo/kafka/chatroom/api/ChatroomController.java @@ -3,10 +3,15 @@ package de.juplo.kafka.chatroom.api; import de.juplo.kafka.chatroom.domain.Chatroom; import de.juplo.kafka.chatroom.domain.Message; import lombok.RequiredArgsConstructor; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; import java.time.Clock; +import java.time.Duration; import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -36,19 +41,27 @@ public class ChatroomController } @PutMapping("post/{chatroomId}/{username}/{messageId}") - public MessageTo post( + public Mono post( @PathVariable UUID chatroomId, @PathVariable String username, @PathVariable UUID messageId, - @RequestBody String message) + @RequestBody String text) { - return MessageTo.from( + return chatrooms .get(chatroomId) .addMessage( messageId, LocalDateTime.now(clock), username, - message)); + text) + .map(message -> MessageTo.from(message)); } -} + + @GetMapping( + path = "listen/{chatroomId}", + produces = MediaType.TEXT_EVENT_STREAM_VALUE) + public Flux listen(@PathVariable UUID chatroomId) + { + return chatrooms.get(chatroomId).listen(); + }}