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.net.URL;
|
||||||
import java.security.KeyPair;
|
import java.security.KeyPair;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.time.Instant;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -148,6 +149,13 @@ public interface Connection extends AutoCloseable {
|
||||||
*/
|
*/
|
||||||
List<X509Certificate> readCertificates() throws AcmeException;
|
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
|
* Throws an {@link AcmeRetryAfterException} if the last status was HTTP Accepted and
|
||||||
* a Retry-After header was received.
|
* a Retry-After header was received.
|
||||||
|
|
|
@ -233,7 +233,7 @@ public class DefaultConnection implements Connection {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleRetryAfter(String message) throws AcmeException {
|
public void handleRetryAfter(String message) throws AcmeException {
|
||||||
var retryAfter = getRetryAfterHeader();
|
var retryAfter = getRetryAfter();
|
||||||
if (retryAfter.isPresent()) {
|
if (retryAfter.isPresent()) {
|
||||||
throw new AcmeRetryAfterException(message, retryAfter.get());
|
throw new AcmeRetryAfterException(message, retryAfter.get());
|
||||||
}
|
}
|
||||||
|
@ -454,10 +454,8 @@ public class DefaultConnection implements Connection {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Gets the instant sent with the Retry-After header.
|
public Optional<Instant> getRetryAfter() {
|
||||||
*/
|
|
||||||
private Optional<Instant> getRetryAfterHeader() {
|
|
||||||
return getResponse().headers()
|
return getResponse().headers()
|
||||||
.firstValue(RETRY_AFTER_HEADER)
|
.firstValue(RETRY_AFTER_HEADER)
|
||||||
.map(this::parseRetryAfterHeader);
|
.map(this::parseRetryAfterHeader);
|
||||||
|
@ -542,7 +540,7 @@ public class DefaultConnection implements Connection {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("rateLimited".equals(error)) {
|
if ("rateLimited".equals(error)) {
|
||||||
var retryAfter = getRetryAfterHeader();
|
var retryAfter = getRetryAfter();
|
||||||
var rateLimits = getLinks("help");
|
var rateLimits = getLinks("help");
|
||||||
throw new AcmeRateLimitedException(problem, retryAfter.orElse(null), rateLimits);
|
throw new AcmeRateLimitedException(problem, retryAfter.orElse(null), rateLimits);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ package org.shredzone.acme4j.connector;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.security.KeyPair;
|
import java.security.KeyPair;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.time.Instant;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -74,6 +75,11 @@ public class DummyConnection implements Connection {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Instant> getRetryAfter() {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleRetryAfter(String message) throws AcmeException {
|
public void handleRetryAfter(String message) throws AcmeException {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
|
|
Loading…
Reference in New Issue