X-Git-Url: https://juplo.de/gitweb/?p=demos%2Fpact;a=blobdiff_plain;f=pwreset%2Fsrc%2Fmain%2Fjava%2Fde%2Fjuplo%2Fdemos%2Fpwreset%2Fadapters%2Fout%2FRemoteUsersServiceConsumer.java;fp=pwreset%2Fsrc%2Fmain%2Fjava%2Fde%2Fjuplo%2Fdemos%2Fpwreset%2Fadapters%2Fout%2FRemoteUsersServiceConsumer.java;h=eb1492fb6107324d23356bf8c002cddb0b1fd757;hp=0000000000000000000000000000000000000000;hb=5316cb48d040cad4e84ee6057acee61772fd7df2;hpb=a47d4db4ceeabae765f3395375654af87181e408 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 index 0000000..eb1492f --- /dev/null +++ b/pwreset/src/main/java/de/juplo/demos/pwreset/adapters/out/RemoteUsersServiceConsumer.java @@ -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 getUserByEmail(String email) { + ResponseEntity 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()); + } + } +}