summaryrefslogtreecommitdiff
path: root/src/saml2/response.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/saml2/response.py')
-rw-r--r--src/saml2/response.py43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/saml2/response.py b/src/saml2/response.py
index 323e71e6..6d32e313 100644
--- a/src/saml2/response.py
+++ b/src/saml2/response.py
@@ -354,26 +354,29 @@ class StatusResponse(object):
return self._postamble()
def status_ok(self):
- if self.response.status:
- status = self.response.status
- logger.info("status: %s", status)
- if status.status_code.value != samlp.STATUS_SUCCESS:
- logger.info("Not successful operation: %s", status)
- if status.status_code.status_code:
- excep = STATUSCODE2EXCEPTION[
- status.status_code.status_code.value]
- else:
- excep = StatusError
- if status.status_message:
- msg = status.status_message.text
- else:
- try:
- msg = status.status_code.status_code.value
- except Exception:
- msg = "Unknown error"
- raise excep(
- "%s from %s" % (msg, status.status_code.value,))
- return True
+ status = self.response.status
+ logger.info("status: %s", status)
+
+ if not status or status.status_code.value == samlp.STATUS_SUCCESS:
+ return True
+
+ err_code = (
+ status.status_code.status_code.value
+ if status.status_code.status_code
+ else None
+ )
+ err_msg = (
+ status.status_message.text
+ if status.status_message
+ else err_code or "Unknown error"
+ )
+ err_cls = STATUSCODE2EXCEPTION.get(err_code, StatusError)
+
+ msg = "Unsuccessful operation: {status}\n{msg} from {code}".format(
+ status=status, msg=err_msg, code=err_code
+ )
+ logger.info(msg)
+ raise err_cls(msg)
def issue_instant_ok(self):
""" Check that the response was issued at a reasonable time """