From 56aea77d0f41c90f5e2d1c723280850871368bcc Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 24 Mar 2022 17:42:02 +0100 Subject: [PATCH 09/11] wip: convert soap:Fault to json --- passerelle/apps/soap/models.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/passerelle/apps/soap/models.py b/passerelle/apps/soap/models.py index 7ae7b8d6..19cef471 100644 --- a/passerelle/apps/soap/models.py +++ b/passerelle/apps/soap/models.py @@ -30,6 +30,7 @@ from passerelle.base.models import BaseResource, HTTPResource from passerelle.utils.api import endpoint from passerelle.utils.conversion import exception_to_text from passerelle.utils.json import unflatten +from passerelle.utils.jsonresponse import APIError class SOAPConnector(BaseResource, HTTPResource): @@ -115,6 +116,11 @@ class SOAPConnector(BaseResource, HTTPResource): payload = unflatten(payload) try: soap_response = getattr(self.client.service, method_name)(**payload) + except zeep.exceptions.Fault as e: + fault_details = {} + for attrib in ['actor', 'code', 'message', 'subcode']: + fault_details[attrib] = getattr(e, attrib, None) + raise APIError('soap:Fault', data=fault_details) except zeep.exceptions.ValidationError as e: e.status_code = 400 raise e -- 2.35.1