|
2 | 2 |
|
3 | 3 | import com.fasterxml.jackson.core.type.TypeReference;
|
4 | 4 | import com.fasterxml.jackson.databind.ObjectMapper;
|
5 |
| -import lombok.Getter; |
6 | 5 | import org.springframework.stereotype.Component;
|
7 | 6 | import retrofit2.Call;
|
8 |
| -import retrofit2.Retrofit; |
9 |
| -import retrofit2.converter.jackson.JacksonConverterFactory; |
| 7 | +import retrofit2.Response; |
10 | 8 | import ru.mika.vkpingpong.dto.request.SendMessageRequest;
|
11 | 9 | import ru.mika.vkpingpong.dto.response.SendMessageResponse;
|
12 | 10 |
|
13 |
| -import java.util.Map; |
| 11 | +import java.util.*; |
14 | 12 |
|
15 | 13 | @Component
|
16 | 14 | public class VkRepository {
|
17 | 15 |
|
18 | 16 | private final VkApiCreator apiCreator;
|
19 | 17 |
|
| 18 | + private final Map<Long, List<Long>> callbacksMap = new HashMap<>(); |
| 19 | + |
20 | 20 | public VkRepository(VkApiCreator apiCreator) {
|
21 | 21 | this.apiCreator = apiCreator;
|
22 | 22 | }
|
23 | 23 |
|
24 | 24 | public SendMessageResponse send(SendMessageRequest request) {
|
| 25 | + if (callbacksMap.containsKey(request.getUserId())) { |
| 26 | + for (Long id: callbacksMap.get(request.getUserId())) { |
| 27 | + if (Objects.equals(id, request.getRandomId())) { |
| 28 | + return null; |
| 29 | + } |
| 30 | + } |
| 31 | + } |
25 | 32 | var objectMapper = new ObjectMapper();
|
26 | 33 | Map<String, Object> paramsMap = objectMapper.convertValue(request, new TypeReference<>() {});
|
27 | 34 | try {
|
28 | 35 | VkApi vkApi = apiCreator.create();
|
29 | 36 | Call<SendMessageResponse> responseCall = vkApi.sendMessage(paramsMap);
|
30 |
| - return responseCall.execute().body(); |
| 37 | + Response<SendMessageResponse> response = responseCall.execute(); |
| 38 | + List<Long> randomIdList = callbacksMap.getOrDefault(request.getUserId(), new ArrayList<>()); |
| 39 | + randomIdList.add(request.getRandomId()); |
| 40 | + callbacksMap.put(request.getUserId(), randomIdList); |
| 41 | + return response.body(); |
| 42 | + |
31 | 43 | } catch (Exception e) {
|
32 | 44 | e.printStackTrace();
|
33 | 45 | }
|
|
0 commit comments