query:1.0.0 - Query rankings by username
[demos/kafka/wordcount] / src / main / java / de / juplo / kafka / wordcount / query / QueryController.java
diff --git a/src/main/java/de/juplo/kafka/wordcount/query/QueryController.java b/src/main/java/de/juplo/kafka/wordcount/query/QueryController.java
new file mode 100644 (file)
index 0000000..14006b6
--- /dev/null
@@ -0,0 +1,35 @@
+package de.juplo.kafka.wordcount.query;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.net.URI;
+import java.util.Optional;
+
+
+@RestController
+@RequiredArgsConstructor
+public class QueryController
+{
+  private final QueryStreamProcessor processor;
+
+  @GetMapping("{username}")
+  ResponseEntity<Ranking> queryFor(@PathVariable String username)
+  {
+    Optional<URI> redirect = processor.getRedirect(username);
+    if (redirect.isPresent())
+    {
+      return
+          ResponseEntity
+              .status(HttpStatus.TEMPORARY_REDIRECT)
+              .location(redirect.get())
+              .build();
+    }
+
+    return ResponseEntity.of(processor.getRanking(username));
+  }
+}