diff --git a/duniterpy/api/client.py b/duniterpy/api/client.py index 5216596ee8507a963b562cca49a8caa491bde478..709e4c4bce0d493f778c40910776be8cf8307e6e 100644 --- a/duniterpy/api/client.py +++ b/duniterpy/api/client.py @@ -257,27 +257,27 @@ class API: self.connection_handler.proxy, self.connection_handler.http_scheme ) - response = request.urlopen(duniter_request, timeout=15) # type: HTTPResponse - - if response.status != 200: + with request.urlopen( + duniter_request, timeout=15 + ) as response: # type: HTTPResponse + if response.status != 200: + content = response.read().decode("utf-8") + if bma_errors: + try: + error_data = parse_error(content) + raise DuniterError(error_data) + except (TypeError, jsonschema.ValidationError) as exception: + raise ValueError( + "status code != 200 => %d (%s)" % (response.status, content) + ) from exception + + raise ValueError( + "status code != 200 => %d (%s)" % (response.status, content) + ) + + # get response content + return_response = copy.copy(response) content = response.read().decode("utf-8") - if bma_errors: - try: - error_data = parse_error(content) - raise DuniterError(error_data) - except (TypeError, jsonschema.ValidationError) as exception: - raise ValueError( - "status code != 200 => %d (%s)" % (response.status, content) - ) from exception - - raise ValueError( - "status code != 200 => %d (%s)" % (response.status, content) - ) - - # get response content - return_response = copy.copy(response) - content = response.read().decode("utf-8") - response.close() # if schema supplied... if schema is not None: diff --git a/examples/save_revoke_document.py b/examples/save_revoke_document.py index 6bd3b9e843d4ccaad6e156c3382af07662f07065..1496f7d45f6264c4862e2865252e9c103c7bd8ea 100644 --- a/examples/save_revoke_document.py +++ b/examples/save_revoke_document.py @@ -158,9 +158,8 @@ def main(): ) # save revoke document in a file - fp = open(REVOCATION_DOCUMENT_FILE_PATH, "w") - fp.write(revocation_signed_raw_document) - fp.close() + with open(REVOCATION_DOCUMENT_FILE_PATH, "w") as fp: + fp.write(revocation_signed_raw_document) # document saved print("Revocation document saved in %s" % REVOCATION_DOCUMENT_FILE_PATH)