java.lang.Object
org.shredzone.acme4j.connector.DefaultConnection
- All Implemented Interfaces:
AutoCloseable
,Connection
Default implementation of
Connection
.-
Field Summary
-
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.void
handleRetryAfter
(String message) Throws anAcmeRetryAfterException
if the last status was HTTP Accepted and a Retry-After header was received.Reads a certificate and its issuers.Reads a server response as JSON data.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.protected int
sendRequest
(URL url, Session session, String accept, ZonedDateTime ifModifiedSince) Sends an unsigned GET request.int
sendRequest
(URL url, Session session, ZonedDateTime ifModifiedSince) Sends a simple GET request.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.
-
Field Details
-
httpConnector
-
conn
-
-
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
HttpURLConnection.HTTP_OK
, anAcmeException
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 data.- Specified by:
readJsonResponse
in interfaceConnection
- Returns:
- The JSON response.
- Throws:
AcmeException
-
readCertificates
Description copied from interface:Connection
Reads a certificate and its issuers.- Specified by:
readCertificates
in interfaceConnection
- Returns:
- List of X.509 certificate and chain that was read.
- Throws:
AcmeException
-
handleRetryAfter
Description copied from interface:Connection
Throws anAcmeRetryAfterException
if the last status was HTTP Accepted and a Retry-After header was received.- Specified by:
handleRetryAfter
in interfaceConnection
- Parameters:
message
- Message to be sent along with theAcmeRetryAfterException
- 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
null
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
, ornull
if no Location header was set
-
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 an 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 int sendRequest(URL url, Session session, String accept, @Nullable ZonedDateTime ifModifiedSince) throws AcmeException Sends an unsigned GET request.- Parameters:
url
-URL
to send the request to.session
-Session
instance to be used for signing and trackingaccept
- Accept headerifModifiedSince
- Set an If-Modified-Since header with the given date. If set, an NOT_MODIFIED response is accepted as valid.- Returns:
- HTTP 200 class status that was returned
- Throws:
AcmeException
-
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
-