--- /dev/null
+package de.juplo.demos.pwreset.adapter;
+
+import de.juplo.demos.pwreset.domain.User;
+import de.juplo.demos.pwreset.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());
+ }
+ }
+}