WIP
[demos/kafka/outbox] / src / main / java / de / trion / kafka / outbox / OutboxController.java
index 78d4999..86ff44f 100644 (file)
@@ -5,6 +5,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.http.ResponseEntity;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
 import org.springframework.web.util.UriComponents;
 import org.springframework.web.util.UriComponentsBuilder;
 
@@ -26,14 +27,36 @@ public class OutboxController {
     }
 
 
-    @PostMapping()
+    @PostMapping
     public ResponseEntity<Void> getVorgang(
-            UriComponentsBuilder builder,
+            ServletUriComponentsBuilder builder,
             @RequestBody String username) {
-        User user = new User(username, LocalDateTime.now(), false);
+        String sanitizedUsername = OutboxController.sanitize(username);
+        User user = new User(sanitizedUsername, LocalDateTime.now(), false);
         repository.save(user);
         // TODO: Not-Unique Fehler auslösen
-        UriComponents uri = builder.path("/{username}").buildAndExpand(username);
+        UriComponents uri =
+            builder
+                .fromCurrentRequest()
+                .path("{username}")
+                .buildAndExpand(sanitizedUsername);
         return ResponseEntity.created(uri.toUri()).build();
     }
+
+    @GetMapping("{username}")
+    public ResponseEntity<User> getUser(@PathVariable String username) {
+        User user = repository.findByUsername(OutboxController.sanitize(username));
+
+        if (user == null)
+            return ResponseEntity.notFound().build();
+
+        return ResponseEntity.ok(user);
+    }
+
+    private static String sanitize(String string) {
+        if (string == null)
+            return "";
+
+        return string.trim().toLowerCase();
+    }
 }