diff options
author | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-08-04 19:55:17 +0000 |
---|---|---|
committer | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-08-04 19:55:17 +0000 |
commit | 6f48cba5e81959bf43bf6a0d668f9bda1e4545b8 (patch) | |
tree | 0a9f23507b1edd624a50448b1fb57f86a67be534 /python/lasso.py | |
parent | 3e411cc8ef1d2c6088df57ea6f5bd8f0f98f4c79 (diff) | |
download | lasso-6f48cba5e81959bf43bf6a0d668f9bda1e4545b8.tar.gz lasso-6f48cba5e81959bf43bf6a0d668f9bda1e4545b8.tar.xz lasso-6f48cba5e81959bf43bf6a0d668f9bda1e4545b8.zip |
Python binding now raises exceptions instead of returning error codes.
Close bug #237.
Diffstat (limited to 'python/lasso.py')
-rw-r--r-- | python/lasso.py | 198 |
1 files changed, 142 insertions, 56 deletions
diff --git a/python/lasso.py b/python/lasso.py index a26df50a..937e4736 100644 --- a/python/lasso.py +++ b/python/lasso.py @@ -39,16 +39,24 @@ _initialized = False class Error(Exception): code = None # Use negative error codes for binding specific errors. - msg = None + functionName = None - def __init__(self, msg=None): - if msg is not None: - self.msg = msg + def __init__(self, functionName): + self.functionName = functionName def __str__(self): return repr(self.msg) +class ErrorUnknown(Error): + def __init__(self, code, functionName): + ErrorUnknown.__init__(functionName) + self.code = code + + def __str__(self): + return 'Unknown error number %d in Lasso function %s' % (self.code, self.functionName) + + class ErrorLassoAlreadyInitialized(Error): code = -1 msg = 'Lasso already initialized' @@ -61,17 +69,18 @@ class ErrorLassoNotInitialized(Error): class ErrorInstanceCreationFailed(Error): code = -3 - functionName = None - - def __init__(self, functionName): - self.functionName = functionName def __str__(self, functionName): return 'Instance creation failed in Lasso function %s()' % self.functionName +def newError(code, functionName): + # FIXME: Use proper ErrorClass, when Lasso will have well defined error codes. + return ErrorUnknown(code, functionName) + + ################################################################################ -# Functions +# Initialization ################################################################################ @@ -932,8 +941,9 @@ class Server: new_from_dump = classmethod(new_from_dump) def add_provider(self, metadata, public_key=None, certificate=None): - return lassomod.server_add_provider(self, metadata, - public_key, certificate) + errorCode = lassomod.server_add_provider(self, metadata, public_key, certificate) + if errorCode: + raise newError(errorCode, 'lasso_server_add_provider') def dump(self): return lassomod.server_dump(self) @@ -1075,16 +1085,24 @@ class Profile: return lassomod.profile_is_session_dirty(self) def set_identity(self, identity): - return lassomod.profile_set_identity(self, identity) + errorCode = lassomod.profile_set_identity(self, identity) + if errorCode: + raise newError(errorCode, 'lasso_profile_set_identity') def set_identity_from_dump(self, dump): - return lassomod.profile_set_identity_from_dump(self, dump) + errorCode = lassomod.profile_set_identity_from_dump(self, dump) + if errorCode: + raise newError(errorCode, 'lasso_profile_set_identity_from_dump') def set_session(self, session): - return lassomod.profile_set_session(self, session) + errorCode = lassomod.profile_set_session(self, session) + if errorCode: + raise newError(errorCode, 'lasso_profile_set_session') def set_session_from_dump(self, dump): - return lassomod.profile_set_session_from_dump(self, dump) + errorCode = lassomod.profile_set_session_from_dump(self, dump) + if errorCode: + raise newError(errorCode, 'lasso_profile_set_session_from_dump') ## login loginProtocolProfileBrwsArt = 1 @@ -1145,51 +1163,70 @@ class Login(Profile): new_from_dump = classmethod(new_from_dump) def accept_sso(self): - return lassomod.login_accept_sso(self) + errorCode = lassomod.login_accept_sso(self) + if errorCode: + raise newError(errorCode, 'lasso_login_accept_sso') def build_artifact_msg(self, authentication_result, authenticationMethod, reauthenticateOnOrAfter, method): - return lassomod.login_build_artifact_msg(self, authentication_result, - authenticationMethod, - reauthenticateOnOrAfter, - method) + errorCode = lassomod.login_build_artifact_msg( + self, authentication_result, authenticationMethod, reauthenticateOnOrAfter, method) + if errorCode: + raise newError(errorCode, 'lasso_login_build_artifact_msg') def build_authn_request_msg(self): - return lassomod.login_build_authn_request_msg(self) + errorCode = lassomod.login_build_authn_request_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_login_build_authn_request_msg') def build_authn_response_msg(self, authentication_result, authenticationMethod, reauthenticateOnOrAfter): - return lassomod.login_build_authn_response_msg(self, authentication_result, - authenticationMethod, - reauthenticateOnOrAfter) + errorCode = lassomod.login_build_authn_response_msg( + self, authentication_result, authenticationMethod, reauthenticateOnOrAfter) + if errorCode: + raise newError(errorCode, 'lasso_login_build_authn_response_msg') def build_request_msg(self): - return lassomod.login_build_request_msg(self) + errorCode = lassomod.login_build_request_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_login_build_request_msg') def dump(self): return lassomod.login_dump(self) def init_authn_request(self, remote_providerID): - return lassomod.login_init_authn_request(self, remote_providerID) + errorCode = lassomod.login_init_authn_request(self, remote_providerID) + if errorCode: + raise newError(errorCode, 'lasso_login_init_authn_request') def init_from_authn_request_msg(self, authn_request_msg, authn_request_method): - return lassomod.login_init_from_authn_request_msg(self, authn_request_msg, - authn_request_method) + errorCode = lassomod.login_init_from_authn_request_msg( + self, authn_request_msg, authn_request_method) + if errorCode: + raise newError(errorCode, 'lasso_login_init_from_authn_request_msg') def init_request(self, response_msg, response_method): - return lassomod.login_init_request(self, response_msg, response_method) + errorCode = lassomod.login_init_request(self, response_msg, response_method) + if errorCode: + raise newError(errorCode, 'lasso_login_init_request') def must_authenticate(self): return lassomod.login_must_authenticate(self) def process_authn_response_msg(self, authn_response_msg): - return lassomod.login_process_authn_response_msg(self, authn_response_msg) + errorCode = lassomod.login_process_authn_response_msg(self, authn_response_msg) + if errorCode: + raise newError(errorCode, 'lasso_login_process_authn_response_msg') def process_request_msg(self, request_msg): - return lassomod.login_process_request_msg(self, request_msg) + errorCode = lassomod.login_process_request_msg(self, request_msg) + if errorCode: + raise newError(errorCode, 'lasso_login_process_request_msg') def process_response_msg(self, response_msg): - return lassomod.login_process_response_msg(self, response_msg) + errorCode = lassomod.login_process_response_msg(self, response_msg) + if errorCode: + raise newError(errorCode, 'lasso_login_process_response_msg') providerTypeNone = 0 @@ -1233,10 +1270,14 @@ class Logout(Profile): new = classmethod(new) def build_request_msg(self): - return lassomod.logout_build_request_msg(self) + errorCode = lassomod.logout_build_request_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_logout_build_request_msg') def build_response_msg(self): - return lassomod.logout_build_response_msg(self) + errorCode = lassomod.logout_build_response_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_logout_build_response_msg') def destroy(self): lassomod.logout_destroy(self); @@ -1245,16 +1286,24 @@ class Logout(Profile): return lassomod.logout_get_next_providerID(self); def init_request(self, remote_providerID = None): - return lassomod.logout_init_request(self, remote_providerID); + errorCode = lassomod.logout_init_request(self, remote_providerID); + if errorCode: + raise newError(errorCode, 'lasso_logout_init_request') def process_request_msg(self, request_msg, request_method): - return lassomod.logout_process_request_msg(self, request_msg, request_method); + errorCode = lassomod.logout_process_request_msg(self, request_msg, request_method); + if errorCode: + raise newError(errorCode, 'lasso_logout_process_request_msg') def validate_request(self): - return lassomod.logout_validate_request(self); + errorCode = lassomod.logout_validate_request(self); + if errorCode: + raise newError(errorCode, 'lasso_logout_validate_request') def process_response_msg(self, response_msg, response_method): - return lassomod.logout_process_response_msg(self, response_msg, response_method); + errorCode = lassomod.logout_process_response_msg(self, response_msg, response_method); + if errorCode: + raise newError(errorCode, 'lasso_logout_process_response_msg') class FederationTermination(Profile): """\brief Short desc @@ -1292,19 +1341,28 @@ class FederationTermination(Profile): new = classmethod(new) def build_notification_msg(self): - return lassomod.federation_termination_build_notification_msg(self) + errorCode = lassomod.federation_termination_build_notification_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_federation_termination_build_notification_msg') def destroy(self): lassomod.federation_termination_destroy(self) def init_notification(self, remote_providerID = None): - return lassomod.federation_termination_init_notification(self, remote_providerID) + errorCode = lassomod.federation_termination_init_notification(self, remote_providerID) + if errorCode: + raise newError(errorCode, 'lasso_federation_termination_init_notification') def load_notification_msg(self, notification_msg, notification_method): - return lassomod.federation_termination_load_notification_msg(self, notification_msg, notification_method) + errorCode = lassomod.federation_termination_load_notification_msg( + self, notification_msg, notification_method) + if errorCode: + raise newError(errorCode, 'lasso_federation_termination_load_notification_msg') def process_notification(self): - return lassomod.federation_termination_process_notification(self) + errorCode = lassomod.federation_termination_process_notification(self) + if errorCode: + raise newError(errorCode, 'lasso_federation_termination_process_notification') class RegisterNameIdentifier: @@ -1338,22 +1396,33 @@ class RegisterNameIdentifier: new = classmethod(new) def build_request_msg(self): - return lassomod.register_name_identifier_build_request_msg(self) + errorCode = lassomod.register_name_identifier_build_request_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_register_name_identifier_build_request_msg') def build_response_msg(self): - return lassomod.register_name_identifier_build_response_msg(self) + errorCode = lassomod.register_name_identifier_build_response_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_register_name_identifier_build_response_msg') def destroy(self): pass def init_request(self, remote_providerID): - return lassomod.register_name_identifier_init_request(self, remote_providerID) + errorCode = lassomod.register_name_identifier_init_request(self, remote_providerID) + if errorCode: + raise newError(errorCode, 'lasso_register_name_identifier_init_request') def process_request(self): - return lassomod.register_name_identifier_process_request(self) + errorCode = lassomod.register_name_identifier_process_request(self) + if errorCode: + raise newError(errorCode, 'lasso_register_name_identifier_process_request') def process_response_msg(self, response_msg, response_method): - return lassomod.register_name_identifier_process_response_msg(self, response_msg, response_method) + errorCode = lassomod.register_name_identifier_process_response_msg( + self, response_msg, response_method) + if errorCode: + raise newError(errorCode, 'lasso_register_name_identifier_process_response_msg') class Lecp: """\brief Short desc @@ -1388,31 +1457,48 @@ class Lecp: new = classmethod(new) def build_authn_request_envelope_msg(self): - return lassomod.lecp_build_authn_request_envelope_msg(self) + errorCode = lassomod.lecp_build_authn_request_envelope_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_lecp_build_authn_request_envelope_msg') def build_authn_response_envelope_msg(self): - return lassomod.lecp_build_authn_response_envelope_msg(self) + errorCode = lassomod.lecp_build_authn_response_envelope_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_lecp_build_authn_response_envelope_msg') def build_authn_request_msg(self): - return lassomod.lecp_build_authn_request_msg(self) + errorCode = lassomod.lecp_build_authn_request_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_lecp_build_authn_request_msg') def build_authn_response_msg(self): - return lassomod.lecp_build_authn_response_msg(self) + errorCode = lassomod.lecp_build_authn_response_msg(self) + if errorCode: + raise newError(errorCode, 'lasso_lecp_build_authn_response_msg') def destroy(self): lassomod.lecp_destroy(self) def init_authn_request(self, remote_providerID): - return lassomod.lecp_init_authn_request(self, remote_providerID) + errorCode = lassomod.lecp_init_authn_request(self, remote_providerID) + if errorCode: + raise newError(errorCode, 'lasso_lecp_init_authn_request') def init_from_authn_request_msg(self, authn_request_msg, authn_request_method): - return lassomod.lecp_init_from_authn_request_msg(self, authn_request_msg, authn_request_method) + errorCode = lassomod.lecp_init_from_authn_request_msg( + self, authn_request_msg, authn_request_method) + if errorCode: + raise newError(errorCode, 'lasso_lecp_init_from_authn_request_msg') def process_authn_request_envelope_msg(self, request_msg): - return lassomod.lecp_process_authn_request_envelope_msg(self, request_msg) - + errorCode = lassomod.lecp_process_authn_request_envelope_msg(self, request_msg) + if errorCode: + raise newError(errorCode, 'lasso_lecp_process_authn_request_envelope_msg') + def process_authn_response_envelope_msg(self, response_msg): - return lassomod.lecp_process_authn_response_envelope_msg(self, response_msg) + errorCode = lassomod.lecp_process_authn_response_envelope_msg(self, response_msg) + if errorCode: + raise newError(errorCode, 'lasso_lecp_process_authn_response_envelope_msg') if not _initialized: |