java.lang.Object
org.shredzone.acme4j.connector.DefaultConnection
- All Implemented Interfaces:
AutoCloseable
,Connection
Default implementation of
Connection
. It communicates with the ACME server via
HTTP, with a client that is provided by the given HttpConnector
.-
Field Summary
Modifier and TypeFieldDescriptionprotected final HttpClient
protected final HttpConnector
protected HttpResponse<InputStream>
-
Constructor Summary
ConstructorDescriptionDefaultConnection
(HttpConnector httpConnector) Creates a newDefaultConnection
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Closes theConnection
, releasing all resources.Returns the expiration date of the resource, if present.Returns the content of the last-modified header, if present.Gets one or more relation links from the header.Gets a location from theLocation
header.getNonce()
Gets the nonce from the nonce header.Returns the Retry-After header if present.Reads a certificate and its chain of issuers.Reads a server response as JSON object.void
resetNonce
(Session session) Resets the session nonce, by fetching a new one.int
sendCertificateRequest
(URL url, Login login) Sends a signed POST-as-GET request for a certificate resource.int
sendRequest
(URL url, Session session, ZonedDateTime ifModifiedSince) Sends a simple GET request.protected void
sendRequest
(Session session, URL url, Consumer<HttpRequest.Builder> body) Sends a HTTP request via http client.int
sendSignedPostAsGetRequest
(URL url, Login login) Sends a signed POST-as-GET request.int
sendSignedRequest
(URL url, JSONBuilder claims, Login login) Sends a signed POST request.int
sendSignedRequest
(URL url, JSONBuilder claims, Session session, KeyPair keypair) Sends a signed POST request.protected int
sendSignedRequest
(URL url, JSONBuilder claims, Session session, KeyPair keypair, URL accountLocation, String accept) Sends a signed POST request.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.shredzone.acme4j.connector.Connection
handleRetryAfter
-
Field Details
-
httpConnector
-
httpClient
-
lastResponse
-
-
Constructor Details
-
DefaultConnection
Creates a newDefaultConnection
.- Parameters:
httpConnector
-HttpConnector
to be used for HTTP connections
-
-
Method Details
-
resetNonce
Description copied from interface:Connection
Resets the session nonce, by fetching a new one.- Specified by:
resetNonce
in interfaceConnection
- Parameters:
session
-Session
instance to fetch a nonce for- Throws:
AcmeException
-
sendRequest
public int sendRequest(URL url, Session session, @Nullable ZonedDateTime ifModifiedSince) throws AcmeException Description copied from interface:Connection
Sends a simple GET request.If the response code was not HTTP status 200, an
AcmeException
matching the error is raised.- Specified by:
sendRequest
in interfaceConnection
- Parameters:
url
-URL
to send the request to.session
-Session
instance to be used for trackingifModifiedSince
-ZonedDateTime
to be sent as "If-Modified-Since" header, ornull
if this header is not to be used- Returns:
- HTTP status that was returned
- Throws:
AcmeException
-
sendCertificateRequest
Description copied from interface:Connection
Sends a signed POST-as-GET request for a certificate resource. Requires aLogin
for the session andKeyPair
. TheLogin
account location is sent in a "kid" protected header.If the server does not return a 200 class status code, an
AcmeException
is raised matching the error.- Specified by:
sendCertificateRequest
in interfaceConnection
- Parameters:
url
-URL
to send the request to.login
-Login
instance to be used for signing and tracking.- Returns:
- HTTP 200 class status that was returned
- Throws:
AcmeException
-
sendSignedPostAsGetRequest
Description copied from interface:Connection
Sends a signed POST-as-GET request. Requires aLogin
for the session andKeyPair
. TheLogin
account location is sent in a "kid" protected header.If the server does not return a 200 class status code, an
AcmeException
is raised matching the error.- Specified by:
sendSignedPostAsGetRequest
in interfaceConnection
- Parameters:
url
-URL
to send the request to.login
-Login
instance to be used for signing and tracking.- Returns:
- HTTP 200 class status that was returned
- Throws:
AcmeException
-
sendSignedRequest
Description copied from interface:Connection
Sends a signed POST request. Requires aLogin
for the session andKeyPair
. TheLogin
account location is sent in a "kid" protected header.If the server does not return a 200 class status code, an
AcmeException
is raised matching the error.- Specified by:
sendSignedRequest
in interfaceConnection
- Parameters:
url
-URL
to send the request to.claims
-JSONBuilder
containing claims.login
-Login
instance to be used for signing and tracking.- Returns:
- HTTP 200 class status that was returned
- Throws:
AcmeException
-
sendSignedRequest
public int sendSignedRequest(URL url, JSONBuilder claims, Session session, KeyPair keypair) throws AcmeException Description copied from interface:Connection
Sends a signed POST request. Only requires aSession
. TheKeyPair
is sent in a "jwk" protected header field.If the server does not return a 200 class status code, an
AcmeException
is raised matching the error.- Specified by:
sendSignedRequest
in interfaceConnection
- Parameters:
url
-URL
to send the request to.claims
-JSONBuilder
containing claims.session
-Session
instance to be used for tracking.keypair
-KeyPair
to be used for signing.- Returns:
- HTTP 200 class status that was returned
- Throws:
AcmeException
-
readJsonResponse
Description copied from interface:Connection
Reads a server response as JSON object.- Specified by:
readJsonResponse
in interfaceConnection
- Returns:
- The JSON response.
- Throws:
AcmeException
-
readCertificates
Description copied from interface:Connection
Reads a certificate and its chain of issuers.- Specified by:
readCertificates
in interfaceConnection
- Returns:
- List of X.509 certificate and chain that was read.
- Throws:
AcmeException
-
getNonce
Description copied from interface:Connection
Gets the nonce from the nonce header.- Specified by:
getNonce
in interfaceConnection
- Returns:
- Base64 encoded nonce, or empty if no nonce header was set
-
getLocation
Description copied from interface:Connection
Gets a location from theLocation
header.Relative links are resolved against the last request's URL.
- Specified by:
getLocation
in interfaceConnection
- Returns:
- Location
URL
-
getLastModified
Description copied from interface:Connection
Returns the content of the last-modified header, if present.- Specified by:
getLastModified
in interfaceConnection
- Returns:
- Date in the Last-Modified header, or empty if the server did not provide this information.
-
getExpiration
Description copied from interface:Connection
Returns the expiration date of the resource, if present.- Specified by:
getExpiration
in interfaceConnection
- Returns:
- Expiration date, either from the Cache-Control or Expires header. If empty, the server did not provide an expiration date, or forbid caching.
-
getLinks
Description copied from interface:Connection
Gets one or more relation links from the header. The result is expected to be a URL.Relative links are resolved against the last request's URL.
- Specified by:
getLinks
in interfaceConnection
- Parameters:
relation
- Link relation- Returns:
- Collection of links. Empty if there was no such relation.
-
close
Description copied from interface:Connection
Closes theConnection
, releasing all resources.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceConnection
-
sendRequest
protected void sendRequest(Session session, URL url, Consumer<HttpRequest.Builder> body) throws IOException Sends a HTTP request via http client. This is the central method to be used for sending. It will create aHttpRequest
by using the request builder, configure commnon headers, and then send the request viaHttpClient
.- Parameters:
session
-Session
to be used for sendingurl
- TargetURL
body
- Callback that completes theHttpRequest.Builder
with the request body (e.g. HTTP method, request body, more headers).- Throws:
IOException
-
sendSignedRequest
protected int sendSignedRequest(URL url, @Nullable JSONBuilder claims, Session session, KeyPair keypair, @Nullable URL accountLocation, String accept) throws AcmeException Sends a signed POST request.- Parameters:
url
-URL
to send the request to.claims
-JSONBuilder
containing claims.null
for POST-as-GET request.session
-Session
instance to be used for signing and trackingkeypair
-KeyPair
to be used for signingaccountLocation
- If set, the account location is set as "kid" header. Ifnull
, the public key is set as "jwk" header.accept
- Accept header- Returns:
- HTTP 200 class status that was returned
- Throws:
AcmeException
-
getRetryAfter
Description copied from interface:Connection
Returns the Retry-After header if present.- Specified by:
getRetryAfter
in interfaceConnection
-