network2: Improve error handling

This commit is contained in:
Jakub Warmuz 2015-03-24 18:55:32 +00:00
parent d9176d4267
commit 3dcf81dbb6
No known key found for this signature in database
GPG key ID: 2A7BAD3A489B52EA
3 changed files with 15 additions and 4 deletions

View file

@ -34,4 +34,7 @@ logging.debug(authzr)
csr = M2Crypto.X509.load_request_string(pkg_resources.resource_string(
'letsencrypt.client.tests', os.path.join('testdata', 'csr.pem')))
net.request_issuance(csr, (authzr,))
try:
net.request_issuance(csr, (authzr,))
except messages2.Error as error:
print error.detail

View file

@ -8,7 +8,7 @@ from letsencrypt.acme import other
from letsencrypt.acme import util
class Error(jose.JSONObjectWithFields):
class Error(jose.JSONObjectWithFields, Exception):
"""ACME error.
https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00
@ -23,10 +23,11 @@ class Error(jose.JSONObjectWithFields):
"badCSR": "The CSR is unacceptable (e.g., due to a short key)",
}
typ = jose.Field('type')
typ = jose.Field('type', omitempty=True) # Boulder omits, spec requires
title = jose.Field('title', omitempty=True)
detail = jose.Field('detail')
instance = jose.Field('instance')
# Boulder omits, spec requires
instance = jose.Field('instance', omitempty=True)
@typ.encoder
def typ(value):

View file

@ -33,9 +33,16 @@ class Network(object):
payload=dumps, key=self.key, alg=self.alg).json_dumps()
def _post(self, uri, data):
"""Send POST data.
:raises letsencrypt.acme.messages2.Error:
"""
logging.debug('Sending data: %s', data)
response = requests.post(uri, data)
logging.debug('Received response %s: %s', response, response.text)
if not response.ok:
raise messages2.Error.from_json(response.json())
return response
def _regr_from_response(self, response, uri=None, new_authz_uri=None):