Skip to content

Commit

Permalink
make RetryAfter not be so static
Browse files Browse the repository at this point in the history
  • Loading branch information
ryber committed Sep 19, 2023
1 parent 367d06d commit a37216a
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
13 changes: 8 additions & 5 deletions unirest/src/main/java/kong/unirest/core/BaseRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -341,12 +341,15 @@ public <T> PagedList<T> asPaged(Function<HttpRequest, HttpResponse> mappingFunct

private <E> HttpResponse<E> request(Function<RawResponse, HttpResponse<E>> transformer, Class<?> resultType){
HttpResponse<E> response = config.getClient().request(this, transformer, resultType);

callCount++;
if(config.isAutomaticRetryAfter() && RetryAfter.isRetriable(response) && callCount < config.maxRetries()){
RetryAfter retryAfter = RetryAfter.from(response);
if(retryAfter.canWait()) {
retryAfter.waitForIt();
return request(transformer, resultType);
if(config.isAutomaticRetryAfter()){
var retryAfter = RetryAfter.from(response);
if(retryAfter.isRetriable(response) && callCount < config.maxRetries()) {
if (retryAfter.canWait()) {
retryAfter.waitForIt();
return request(transformer, resultType);
}
}
}
return response;
Expand Down
8 changes: 4 additions & 4 deletions unirest/src/main/java/kong/unirest/core/RetryAfter.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,16 @@ static RetryAfter from(HttpResponse response) {
return from(response.getHeaders());
}

static boolean isRetriable(HttpResponse response) {
return RETRY_CODES.contains(response.getStatus()) && response.getHeaders().containsKey(RETRY_AFTER);
}

static RetryAfter from(Headers response) {
String value = response.getFirst(RETRY_AFTER);
return tryAsDouble(value)
.orElseGet(() -> tryAsDateTime(value));
}

boolean isRetriable(HttpResponse response) {
return RETRY_CODES.contains(response.getStatus()) && response.getHeaders().containsKey(RETRY_AFTER);
}

private static RetryAfter tryAsDateTime(String value) {
ZonedDateTime zdt = Util.tryParseToDate(value);
if(zdt == null){
Expand Down

0 comments on commit a37216a

Please sign in to comment.