query:1.0.0 - Query rankings by username
[demos/kafka/wordcount] / src / main / java / de / juplo / kafka / wordcount / query / QueryController.java
1 package de.juplo.kafka.wordcount.query;
2
3 import lombok.RequiredArgsConstructor;
4 import org.springframework.http.HttpStatus;
5 import org.springframework.http.ResponseEntity;
6 import org.springframework.web.bind.annotation.GetMapping;
7 import org.springframework.web.bind.annotation.PathVariable;
8 import org.springframework.web.bind.annotation.RestController;
9
10 import java.net.URI;
11 import java.util.Optional;
12
13
14 @RestController
15 @RequiredArgsConstructor
16 public class QueryController
17 {
18   private final QueryStreamProcessor processor;
19
20   @GetMapping("{username}")
21   ResponseEntity<Ranking> queryFor(@PathVariable String username)
22   {
23     Optional<URI> redirect = processor.getRedirect(username);
24     if (redirect.isPresent())
25     {
26       return
27           ResponseEntity
28               .status(HttpStatus.TEMPORARY_REDIRECT)
29               .location(redirect.get())
30               .build();
31     }
32
33     return ResponseEntity.of(processor.getRanking(username));
34   }
35 }