Add method to read Retry-After header

pull/140/head
Richard Körber 2023-05-19 12:28:46 +02:00
parent 160f507767
commit 727cd94028
No known key found for this signature in database
GPG Key ID: AAB9FD19C78AA3E0
3 changed files with 18 additions and 6 deletions

View File

@ -16,6 +16,7 @@ package org.shredzone.acme4j.connector;
import java.net.URL;
import java.security.KeyPair;
import java.security.cert.X509Certificate;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.util.Collection;
import java.util.List;
@ -148,6 +149,13 @@ public interface Connection extends AutoCloseable {
*/
List<X509Certificate> readCertificates() throws AcmeException;
/**
* Returns the Retry-After header if present.
*
* @since 3.0.0
*/
Optional<Instant> getRetryAfter();
/**
* Throws an {@link AcmeRetryAfterException} if the last status was HTTP Accepted and
* a Retry-After header was received.

View File

@ -233,7 +233,7 @@ public class DefaultConnection implements Connection {
@Override
public void handleRetryAfter(String message) throws AcmeException {
var retryAfter = getRetryAfterHeader();
var retryAfter = getRetryAfter();
if (retryAfter.isPresent()) {
throw new AcmeRetryAfterException(message, retryAfter.get());
}
@ -454,10 +454,8 @@ public class DefaultConnection implements Connection {
}
}
/**
* Gets the instant sent with the Retry-After header.
*/
private Optional<Instant> getRetryAfterHeader() {
@Override
public Optional<Instant> getRetryAfter() {
return getResponse().headers()
.firstValue(RETRY_AFTER_HEADER)
.map(this::parseRetryAfterHeader);
@ -542,7 +540,7 @@ public class DefaultConnection implements Connection {
}
if ("rateLimited".equals(error)) {
var retryAfter = getRetryAfterHeader();
var retryAfter = getRetryAfter();
var rateLimits = getLinks("help");
throw new AcmeRateLimitedException(problem, retryAfter.orElse(null), rateLimits);
}

View File

@ -16,6 +16,7 @@ package org.shredzone.acme4j.connector;
import java.net.URL;
import java.security.KeyPair;
import java.security.cert.X509Certificate;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.util.Collection;
import java.util.List;
@ -74,6 +75,11 @@ public class DummyConnection implements Connection {
throw new UnsupportedOperationException();
}
@Override
public Optional<Instant> getRetryAfter() {
throw new UnsupportedOperationException();
}
@Override
public void handleRetryAfter(String message) throws AcmeException {
throw new UnsupportedOperationException();