WIP
[demos/pact] / pwreset / src / main / java / de / juplo / demos / consumer / adapter / RemoteUsersServiceConsumer.java
1 package de.juplo.demos.consumer.adapter;
2
3 import de.juplo.demos.consumer.domain.User;
4 import de.juplo.demos.consumer.domain.UsersService;
5 import lombok.RequiredArgsConstructor;
6 import org.springframework.http.HttpStatus;
7 import org.springframework.http.ResponseEntity;
8 import org.springframework.web.client.RestTemplate;
9
10 import java.util.Optional;
11
12
13 @RequiredArgsConstructor
14 public class RemoteUsersServiceConsumer implements UsersService
15 {
16   private final String uriTemplate;
17   private final RestTemplate restTemplate;
18
19
20   @Override
21   public Optional<User> getUserByEmail(String email) {
22     ResponseEntity<UserDTO> response =
23         restTemplate.getForEntity(uriTemplate, UserDTO.class, email);
24     HttpStatus status = response.getStatusCode();
25     UserDTO dto = response.getBody();
26     switch (response.getStatusCode()) {
27       case OK:
28         return
29             Optional.of(
30                 User.builder()
31                     .id(dto.id)
32                     .email(dto.email)
33                     .build());
34       case NOT_FOUND:
35         return Optional.empty();
36       default:
37         throw new RuntimeException(status.toString());
38     }
39   }
40 }