From 37729aba8b0b78c4334922458c5a4a2f5f1785fd Mon Sep 17 00:00:00 2001 From: widlam Date: Thu, 11 May 2023 13:56:01 +0200 Subject: [PATCH] Added request body to history entity and DTO. Changed @GetMapping in MockController to @RequestMapping --- .../com/r11/tools/controller/MockController.java | 2 +- .../IncomingMockRequestInterceptor.java | 14 ++++++++++++++ .../java/com/r11/tools/model/RequestHistory.java | 1 + .../com/r11/tools/model/RequestHistoryDTO.java | 1 + .../com/r11/tools/service/KlausServiceImpl.java | 3 +-- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java index 7187ed2..0966297 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java @@ -181,7 +181,7 @@ public class MockController { * @param mockedResponseId unique id of given message * @return */ - @GetMapping(value = "/r/{clientUUID}/{mockedResponseId}") + @RequestMapping(value = "/r/{clientUUID}/{mockedResponseId}") public ResponseEntity getMockedResponse( @PathVariable UUID clientUUID, @PathVariable int mockedResponseId) { diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/interceptor/IncomingMockRequestInterceptor.java b/Backend/mocked-services/src/main/java/com/r11/tools/interceptor/IncomingMockRequestInterceptor.java index ed6fdc4..4cac531 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/interceptor/IncomingMockRequestInterceptor.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/interceptor/IncomingMockRequestInterceptor.java @@ -5,11 +5,15 @@ import com.r11.tools.service.RequestHistoryService; import lombok.AllArgsConstructor; import org.springframework.http.HttpMethod; import org.springframework.stereotype.Component; +import org.springframework.util.StreamUtils; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerMapping; +import org.springframework.web.util.ContentCachingRequestWrapper; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.Charset; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -25,6 +29,7 @@ public class IncomingMockRequestInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest httpRequest, HttpServletResponse response, Object handler){ Map headers = getHeadersFromHttpRequest(httpRequest); Map pathVariable = getPathVariablesFromHttpRequest(httpRequest); + String requestBody = getRequestBodyFromHttpRequest(httpRequest); RequestHistoryDTO historyDTO = RequestHistoryDTO.builder() .httpMethod(HttpMethod.valueOf(httpRequest.getMethod())) @@ -32,6 +37,7 @@ public class IncomingMockRequestInterceptor implements HandlerInterceptor { .messageID(Integer.valueOf(pathVariable.get("mockedResponseId"))) .clientUUID(UUID.fromString(pathVariable.get("clientUUID"))) .dateTimeStamp(LocalDateTime.now()) + .requestBody(requestBody) .build(); historyService.saveRequest(historyDTO); return true; @@ -56,5 +62,13 @@ public class IncomingMockRequestInterceptor implements HandlerInterceptor { return (Map) httpRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); } + private String getRequestBodyFromHttpRequest( HttpServletRequest httpRequest ){ + HttpServletRequest wrappedRequest = new ContentCachingRequestWrapper(httpRequest); + try { + return StreamUtils.copyToString(wrappedRequest.getInputStream(), Charset.defaultCharset()); + } catch (IOException e) { + return ""; + } + } } diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistory.java b/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistory.java index 5008be8..385d5e2 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistory.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistory.java @@ -36,6 +36,7 @@ public class RequestHistory implements Comparable, Serializable private Integer messageID; private Map headers; private HttpMethod httpMethod; + private String requestBody; @Override public int compareTo(RequestHistory o) { diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistoryDTO.java b/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistoryDTO.java index 5f23ea2..1df697c 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistoryDTO.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistoryDTO.java @@ -28,5 +28,6 @@ public class RequestHistoryDTO { private Integer messageID; private Map headers; private HttpMethod httpMethod; + private String requestBody; } diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausServiceImpl.java b/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausServiceImpl.java index 2190048..ce16bb2 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausServiceImpl.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/service/KlausServiceImpl.java @@ -1,6 +1,5 @@ package com.r11.tools.service; -import com.fasterxml.jackson.databind.ObjectMapper; import com.r11.tools.mappers.MockedMessageMapper; import com.r11.tools.model.MockedMessage; import com.r11.tools.model.MockedMessageDto; @@ -13,6 +12,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; + import java.util.List; import java.util.Optional; import java.util.UUID; @@ -30,7 +30,6 @@ public class KlausServiceImpl implements KlausService { private final MockedMessageMapper mockedMessageMapper; private final Logger log = LogManager.getRootLogger(); private final MockedResponseRepository mockedResponseRepository; - private final ObjectMapper objectMapper; /** * Removes message of given id in given key-uuid set