Skip to content

Commit 71b6804

Browse files
committed
fix: preserve http response in error
1 parent 5b3cac6 commit 71b6804

4 files changed

Lines changed: 9 additions & 5 deletions

File tree

src/main/java/com/crowdin/client/core/http/exceptions/HttpException.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
public class HttpException extends CrowdinApiException {
1010

1111
public Error error;
12+
public String httpResponse;
1213

1314
@Data
1415
public static class Error {
@@ -18,11 +19,12 @@ public static class Error {
1819

1920
}
2021

21-
public static HttpException fromMessage(String message) {
22+
public static HttpException fromMessage(String message, String httpResponse) {
2223
var resp = new HttpException();
2324
var error = new Error();
2425
error.setMessage(message);
2526
resp.setError(error);
27+
resp.setHttpResponse(httpResponse);
2628
return resp;
2729
}
2830
}

src/main/java/com/crowdin/client/core/http/impl/http/ApacheHttpClient.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ private <T, V> T request(String url,
120120
Class<T> clazz,
121121
String method) throws HttpException, HttpBadRequestException {
122122
HttpUriRequest request = this.buildRequest(method, url, data, config);
123+
String httpResponse = null;
123124
try (CloseableHttpResponse response = httpClient.execute(request)) {
124125
int statusCode = response.getStatusLine().getStatusCode();
125126
if (statusCode < 200 || statusCode >= 300) {
@@ -134,9 +135,10 @@ private <T, V> T request(String url,
134135
if (Void.class.equals(clazz)) {
135136
return null;
136137
}
137-
return this.jsonTransformer.parse(this.toString(response.getEntity()), clazz);
138+
httpResponse = this.toString(response.getEntity());
139+
return this.jsonTransformer.parse(httpResponse, clazz);
138140
} catch (IOException e) {
139-
throw HttpException.fromMessage(e.getMessage());
141+
throw HttpException.fromMessage(e.getMessage(), httpResponse);
140142
}
141143
}
142144

src/main/java/com/crowdin/client/core/http/impl/json/CrowdinApiExceptionDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public CrowdinApiException deserialize(JsonParser p, DeserializationContext ctxt
3636
} else if (treeNode.get("error") != null) {
3737
return this.objectMapper.treeToValue(treeNode, HttpException.class);
3838
} else {
39-
return HttpException.fromMessage(treeNode.toString());
39+
return HttpException.fromMessage(treeNode.toString(), null);
4040
}
4141
}
4242
}

src/test/java/com/crowdin/client/core/http/exception/HttpExceptionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class HttpExceptionTest {
99

1010
@Test
1111
public void httpExceptionFromTest() {
12-
HttpException message = HttpException.fromMessage("Exception message!");
12+
HttpException message = HttpException.fromMessage("Exception message!", null);
1313
assertEquals(message.getError().getMessage(), "Exception message!");
1414
}
1515
}

0 commit comments

Comments
 (0)