b69ef819c2fbcf0552eb48f453c0facdbb8f6c06
[demos/pact] / consumer / 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.stereotype.Service;
9 import org.springframework.web.client.RestTemplate;
10
11 import java.util.Optional;
12
13
14 @Service
15 @RequiredArgsConstructor
16 public class RemoteUsersServiceConsumer implements UsersService
17 {
18   private String uriTemplate;
19   private RestTemplate restTemplate;
20
21
22   @Override
23   public Optional<User> getUserByEmail(String email) {
24     ResponseEntity<UserDTO> response =
25         restTemplate.getForEntity(uriTemplate, UserDTO.class, email);
26     HttpStatus status = response.getStatusCode();
27     UserDTO dto = response.getBody();
28     switch (response.getStatusCode()) {
29       case OK:
30         return
31             Optional.of(
32                 User.builder()
33                     .id(dto.id)
34                     .email(dto.email)
35                     .build());
36       case NOT_FOUND:
37         return Optional.empty();
38       default:
39         throw new RuntimeException(status.toString());
40     }
41   }
42 }