WIP
[demos/pact] / pwreset / src / main / java / de / juplo / demos / pwreset / adapters / out / RemoteUsersServiceConsumer.java
diff --git a/pwreset/src/main/java/de/juplo/demos/pwreset/adapters/out/RemoteUsersServiceConsumer.java b/pwreset/src/main/java/de/juplo/demos/pwreset/adapters/out/RemoteUsersServiceConsumer.java
new file mode 100644 (file)
index 0000000..eb1492f
--- /dev/null
@@ -0,0 +1,40 @@
+package de.juplo.demos.pwreset.adapters.out;
+
+import de.juplo.demos.pwreset.domain.api.User;
+import de.juplo.demos.pwreset.domain.api.UsersService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Optional;
+
+
+@RequiredArgsConstructor
+public class RemoteUsersServiceConsumer implements UsersService
+{
+  private final String uriTemplate;
+  private final RestTemplate restTemplate;
+
+
+  @Override
+  public Optional<User> getUserByEmail(String email) {
+    ResponseEntity<UserDTO> response =
+        restTemplate.getForEntity(uriTemplate, UserDTO.class, email);
+    HttpStatus status = response.getStatusCode();
+    UserDTO dto = response.getBody();
+    switch (response.getStatusCode()) {
+      case OK:
+        return
+            Optional.of(
+                User.builder()
+                    .id(dto.id)
+                    .email(dto.email)
+                    .build());
+      case NOT_FOUND:
+        return Optional.empty();
+      default:
+        throw new RuntimeException(status.toString());
+    }
+  }
+}