WIP
[demos/pact] / pwreset / src / main / java / de / juplo / demos / pwreset / adapters / out / UsersServiceGateway.java
diff --git a/pwreset/src/main/java/de/juplo/demos/pwreset/adapters/out/UsersServiceGateway.java b/pwreset/src/main/java/de/juplo/demos/pwreset/adapters/out/UsersServiceGateway.java
new file mode 100644 (file)
index 0000000..53b9d60
--- /dev/null
@@ -0,0 +1,48 @@
+package de.juplo.demos.pwreset.adapters.out;
+
+import de.juplo.demos.pwreset.domain.ports.out.UsersPort;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Optional;
+import java.util.UUID;
+
+
+@RequiredArgsConstructor
+public class UsersServiceGateway implements UsersPort
+{
+  private final String uriTemplate;
+  private final RestTemplate restTemplate;
+
+
+  @Override
+  public Optional<UUID> 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(dto.id);
+
+      case NOT_FOUND:
+        return Optional.empty();
+
+      default:
+        throw new RuntimeException(status.toString());
+    }
+  }
+
+  @Override
+  public void setPassword(UUID userId, String password)
+  {
+
+  }
+}