From 48570e3f39222e1df50c1b4a95fcf63feea3bc07 Mon Sep 17 00:00:00 2001 From: Syed Shahzeb Date: Mon, 25 Aug 2025 21:14:38 +0200 Subject: [PATCH] Get path without getting query params and fix response handler `getPath` directly get the path with query params which is not the same as the old behavior. Were doing error handling inside the response handler. This is not needed as correct error handling is done outside --- .../no/digipost/api/client/internal/ApiServiceImpl.java | 5 ----- .../http/request/interceptor/ApacheHttpRequestToSign.java | 8 ++++++-- .../client/internal/http/response/HttpResponseUtils.java | 6 ++---- .../response/interceptor/ApacheHttpResponseToVerify.java | 7 ++++++- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/no/digipost/api/client/internal/ApiServiceImpl.java b/src/main/java/no/digipost/api/client/internal/ApiServiceImpl.java index 6d5bd2c3..3c0c7e3e 100644 --- a/src/main/java/no/digipost/api/client/internal/ApiServiceImpl.java +++ b/src/main/java/no/digipost/api/client/internal/ApiServiceImpl.java @@ -609,17 +609,12 @@ private CloseableHttpResponse sendDigipostMedia(Object data, String uri) { private HttpClientResponseHandler responseHandler() { return response -> { - if (response.getCode() / 100 == 2) { if (response instanceof CloseableHttpResponse) { return (CloseableHttpResponse) response; } else { throw new DigipostClientException(ErrorCode.GENERAL_ERROR, "Expected response to be instance of CloseableHttpResponse, but got " + response.getClass().getName()); } - } else { - ErrorMessage errorMessage = unmarshal(jaxbContext, response.getEntity().getContent(), ErrorMessage.class); - throw new DigipostClientException(errorMessage); - } }; } } diff --git a/src/main/java/no/digipost/api/client/internal/http/request/interceptor/ApacheHttpRequestToSign.java b/src/main/java/no/digipost/api/client/internal/http/request/interceptor/ApacheHttpRequestToSign.java index dc764fab..bada59b4 100644 --- a/src/main/java/no/digipost/api/client/internal/http/request/interceptor/ApacheHttpRequestToSign.java +++ b/src/main/java/no/digipost/api/client/internal/http/request/interceptor/ApacheHttpRequestToSign.java @@ -48,8 +48,12 @@ public SortedMap getHeaders() { @Override public String getPath() { - String path = clientRequest.getPath(); - return path != null ? path : ""; + try { + String path = clientRequest.getUri().getPath(); + return path != null ? path : ""; + } catch (URISyntaxException e) { + throw new RuntimeException(e.getMessage(), e); + } } @Override diff --git a/src/main/java/no/digipost/api/client/internal/http/response/HttpResponseUtils.java b/src/main/java/no/digipost/api/client/internal/http/response/HttpResponseUtils.java index 46b8b320..64fd62fc 100644 --- a/src/main/java/no/digipost/api/client/internal/http/response/HttpResponseUtils.java +++ b/src/main/java/no/digipost/api/client/internal/http/response/HttpResponseUtils.java @@ -28,6 +28,7 @@ import org.apache.hc.core5.http.HttpResponse; import org.apache.hc.core5.http.HttpStatus; import org.apache.hc.core5.http.io.entity.EntityUtils; +import org.apache.hc.core5.http.message.StatusLine; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -92,10 +93,7 @@ public static void checkResponse(ClassicHttpResponse response, EventLogger event } private static ErrorMessage fetchErrorMessageString(final HttpResponse response, final HttpEntity responseEntity) { - String statusLine = response.getVersion() + " " + response.getCode(); - if (StringUtils.isNotBlank(response.getReasonPhrase())) { - statusLine += " " + response.getReasonPhrase(); - } + StatusLine statusLine = new StatusLine(response); final ErrorType errorType = ErrorType.fromResponseStatus(response.getCode()); if (responseEntity == null) { return new ErrorMessage(errorType, "status=" + statusLine + ", body="); diff --git a/src/main/java/no/digipost/api/client/internal/http/response/interceptor/ApacheHttpResponseToVerify.java b/src/main/java/no/digipost/api/client/internal/http/response/interceptor/ApacheHttpResponseToVerify.java index 88f9ea1f..eb2354ec 100644 --- a/src/main/java/no/digipost/api/client/internal/http/response/interceptor/ApacheHttpResponseToVerify.java +++ b/src/main/java/no/digipost/api/client/internal/http/response/interceptor/ApacheHttpResponseToVerify.java @@ -49,6 +49,11 @@ public SortedMap getHeaders() { @Override public String getPath() { - return (String) context.getAttribute("request-path"); + String pathWithQueryParams = (String) context.getAttribute("request-path"); + int indexOfQuestionMark = pathWithQueryParams.indexOf('?'); + if (indexOfQuestionMark != -1) { + return pathWithQueryParams.substring(0, indexOfQuestionMark); + } + return pathWithQueryParams; } }