WIP
[demos/pact] / pwreset / src / main / java / de / juplo / demos / consumer / adapter / RemoteUsersServiceConsumer.java
diff --git a/pwreset/src/main/java/de/juplo/demos/consumer/adapter/RemoteUsersServiceConsumer.java b/pwreset/src/main/java/de/juplo/demos/consumer/adapter/RemoteUsersServiceConsumer.java
new file mode 100644 (file)
index 0000000..8cbc3eb
--- /dev/null
@@ -0,0 +1,40 @@
+package de.juplo.demos.consumer.adapter;
+
+import de.juplo.demos.consumer.domain.User;
+import de.juplo.demos.consumer.domain.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());
+    }
+  }
+}