Add account, and make acme_version explicit.

This commit is contained in:
Jacob Hoffman-Andrews 2017-11-27 14:35:02 -08:00
parent 1cf5b9f43e
commit 63f8dff67f
2 changed files with 21 additions and 8 deletions

View file

@ -49,6 +49,7 @@ class Client(object): # pylint: disable=too-many-instance-attributes
:ivar messages.Directory directory:
:ivar key: `.JWK` (private)
:ivar account: `.Account` (private)
:ivar acme_version: `int` (private)
:ivar alg: `.JWASignature`
:ivar bool verify_ssl: Verify SSL certificates?
:ivar .ClientNetwork net: Client network. Useful for testing. If not
@ -58,8 +59,8 @@ class Client(object): # pylint: disable=too-many-instance-attributes
"""
# pylint: disable=too-many-arguments
def __init__(self, directory, key, account=None, alg=jose.RS256, verify_ssl=True,
net=None):
def __init__(self, directory, key, account=None, acme_version=1, alg=jose.RS256,
verify_ssl=True, net=None):
"""Initialize.
:param directory: Directory Resource (`.messages.Directory`) or
@ -68,8 +69,9 @@ class Client(object): # pylint: disable=too-many-instance-attributes
"""
self.key = key
self.account = account
self.net = ClientNetwork(key, account=account, alg=alg,
verify_ssl=verify_ssl) if net is None else net
self.acme_version = acme_version
self.net = ClientNetwork(key, account=account, acme_version=acme_version,
alg=alg, verify_ssl=verify_ssl) if net is None else net
if isinstance(directory, six.string_types):
self.directory = messages.Directory.from_json(
@ -90,16 +92,20 @@ class Client(object): # pylint: disable=too-many-instance-attributes
def register(self, new_reg=None):
"""Register.
:param .NewRegistration new_reg:
:param .NewRegistration or .NewAccount new_reg:
:returns: Registration Resource.
:rtype: `.RegistrationResource`
"""
new_reg = messages.NewRegistration() if new_reg is None else new_reg
assert isinstance(new_reg, messages.NewRegistration)
if self.acme_version == 2:
url = self.directory.new_account
new_reg = messages.NewAccount() if new_reg is None else new_reg
else:
url = self.directory.new_reg
new_reg = messages.NewRegistration() if new_reg is None else new_reg
response = self.net.post(self.directory.new_reg, new_reg)
response = self.net.post(url, new_reg)
# TODO: handle errors
assert response.status_code == http_client.CREATED

View file

@ -288,6 +288,13 @@ class NewRegistration(Registration):
resource = fields.Resource(resource_type)
@Directory.register
class NewAccount(Registration):
"""New account."""
resource_type = 'new-account' # not used
resource = fields.Resource(resource_type)
class UpdateRegistration(Registration):
"""Update registration."""
resource_type = 'reg'