diff --git a/build.gradle b/build.gradle index 9c35493..33fc58c 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,7 @@ plugins { } group 'ee.bitweb' -version '4.0.3' +version '4.0.4' java { sourceCompatibility = '17' } diff --git a/src/main/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitRequestBodyMapper.java b/src/main/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitRequestBodyMapper.java index c89a5c7..44ac075 100644 --- a/src/main/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitRequestBodyMapper.java +++ b/src/main/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitRequestBodyMapper.java @@ -76,7 +76,7 @@ String getBodyString(RequestBody body) throws IOException { assert charSet != null; var bodyString = buffer.readString(charSet); - if (body.contentLength() == -1 || body.contentLength() > maxLoggableRequestSize) { + if (body.contentLength() == -1 || bodyString.length() > maxLoggableRequestSize) { return "%s ... Content size: %s characters".formatted( bodyString.substring(0, maxLoggableRequestSize), body.contentLength() diff --git a/src/test/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitRequestBodyMapperTest.java b/src/test/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitRequestBodyMapperTest.java index f92cda8..5fa2ca3 100644 --- a/src/test/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitRequestBodyMapperTest.java +++ b/src/test/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitRequestBodyMapperTest.java @@ -270,4 +270,14 @@ void requestContentIsReturnedInFull() throws MalformedURLException { Mockito.verify(request, Mockito.times(1)).headers(); Mockito.verifyNoInteractions(requestBody); } + + @Test + @DisplayName("Request content bytes count differs from character count") + void requestContentBytesCountDiffersFromCharacterCount() throws IOException { + // "õäöü" is 4 characters, but 8 bytes + var customBody = RequestBody.create("õäöü", MediaType.parse("text/plain")); + var mapper = new RetrofitRequestBodyMapper(5, Set.of()); + + assertEquals("õäöü", mapper.getBodyString(customBody)); + } }