diff options
author | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2018-12-06 10:03:10 +0100 |
---|---|---|
committer | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2018-12-06 10:03:10 +0100 |
commit | 19b21e218f529db7434fb309314e4377c3db3898 (patch) | |
tree | 1c1bf23ed33962bb64afd4d9561676a93902261d | |
parent | 2dce359b7aa0fdd70a08039c207ef55ba71385c9 (diff) | |
download | pysaml2-19b21e218f529db7434fb309314e4377c3db3898.tar.gz |
Rework status_ok structure
Signed-off-by: Ivan Kanakarakis <ivan.kanak@gmail.com>
-rw-r--r-- | src/saml2/response.py | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/saml2/response.py b/src/saml2/response.py index 6bfe4d7c..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.get( - status.status_code.status_code.value, StatusError) - 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 """ |