mirror of https://github.com/shred/acme4j
Add method to read Retry-After header
parent
160f507767
commit
727cd94028
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue