diff options
| -rw-r--r-- | python/lasso.py | 32 | ||||
| -rw-r--r-- | swig/Lasso.i | 87 |
2 files changed, 74 insertions, 45 deletions
diff --git a/python/lasso.py b/python/lasso.py index 2ce9f9d6..cd03230a 100644 --- a/python/lasso.py +++ b/python/lasso.py @@ -354,6 +354,20 @@ class _ProfileChild(object): # Attributes + def get_authn_request(self): + authn_request = self.parent.authn_request + if authn_request is not None: + _setRegisteredClass(authn_request) + return authn_request + authn_request = property(get_authn_request) + + def get_authn_response(self): + authn_response = self.parent.authn_response + if authn_response is not None: + _setRegisteredClass(authn_response) + return authn_response + authn_response = property(get_authn_response) + def get_identity(self): identity = lassomod.lasso_profile_get_identity(self.parent) if identity is not None: @@ -390,12 +404,13 @@ class _ProfileChild(object): def get_request(self): request_type = self.request_type if request_type == messageTypeAuthnRequest: - request = lassomod.lasso_profile_get_authn_request_ref(self.parent) + request = self.parent.authn_request elif request_type == messageTypeRequest: - request = lassomod.lasso_profile_get_request_ref(self.parent) + request = self.parent.request else: - raise ErrorUnknownRequestType('lasso_profile_get_???_request', request_type) - _setRegisteredClass(request) + raise ErrorUnknownRequestType('lasso_profile_get_request', request_type) + if request is not None: + _setRegisteredClass(request) return request request = property(get_request) @@ -406,12 +421,13 @@ class _ProfileChild(object): def get_response(self): response_type = self.response_type if response_type == messageTypeAuthnResponse: - response = lassomod.lasso_profile_get_authn_response_ref(self.parent) + response = self.parent.authn_response elif response_type == messageTypeResponse: - response = lassomod.lasso_profile_get_response_ref(self.parent) + response = self.parent.response else: - raise ErrorUnknownResponseType('lasso_profile_get_???_response', response_type) - _setRegisteredClass(response) + raise ErrorUnknownResponseType('lasso_profile_get_response', response_type) + if response is not None: + _setRegisteredClass(response) return response response = property(get_response) diff --git a/swig/Lasso.i b/swig/Lasso.i index e1d8a8ab..cf2ec05a 100644 --- a/swig/Lasso.i +++ b/swig/Lasso.i @@ -518,12 +518,22 @@ gchar* lasso_session_get_authentication_method(LassoSession *session, gchar *rem ***********************************************************************/ +%{ + /* Dirty hack because otherwise SWIG doesn't recognize attributes defined in extend */ + /* below as read-only arguments. */ + typedef LassoAuthnRequest *LassoAuthnRequestPtr; + typedef LassoAuthnResponse *LassoAuthnResponsePtr; + typedef LassoRequest *LassoRequestPtr; + typedef LassoResponse *LassoResponsePtr; +%} + %nodefault _LassoProfile; typedef struct _LassoProfile { GObject parent; LassoServer *server; - LassoNode *request; - LassoNode *response; + /* Attributes "request" & "response" are define in extend below. */ + /* LassoNode *request; */ + /* LassoNode *response; */ gchar *nameIdentifier; gchar *remote_providerID; gchar *msg_url; @@ -531,44 +541,47 @@ typedef struct _LassoProfile { gchar *msg_relayState; lassoMessageType request_type; lassoMessageType response_type; + + %extend { + /* Read-only access to the "request" attribute */ + const LassoAuthnRequestPtr authn_request; + const LassoAuthnResponsePtr authn_response; + /* Read-only access to the "response" attribute */ + const LassoRequestPtr request; + const LassoResponsePtr response; + } } LassoProfile; -/* Inline Methods */ - -%inline %{ - -LassoAuthnRequest* lasso_profile_get_authn_request_ref(LassoProfile *profile) -{ - if (profile->request_type == lassoMessageTypeAuthnRequest) - return LASSO_AUTHN_REQUEST(profile->request); - else - return NULL; -} - -LassoAuthnResponse* lasso_profile_get_authn_response_ref(LassoProfile *profile) -{ - if (profile->response_type == lassoMessageTypeAuthnResponse) - return LASSO_AUTHN_RESPONSE(profile->response); - else - return NULL; -} - -LassoRequest* lasso_profile_get_request_ref(LassoProfile *profile) -{ - if (profile->request_type == lassoMessageTypeRequest) - return LASSO_REQUEST(profile->request); - else - return NULL; -} - -LassoResponse* lasso_profile_get_response_ref(LassoProfile *profile) -{ - if (profile->response_type == lassoMessageTypeResponse) - return LASSO_RESPONSE(profile->response); - else - return NULL; -} +/* Implementations */ + +%{ + LassoAuthnRequest* LassoProfile_authn_request_get(LassoProfile *profile) { + if (profile->request_type == lassoMessageTypeAuthnRequest) + return LASSO_AUTHN_REQUEST(profile->request); + else + return NULL; + } + + LassoAuthnResponse* LassoProfile_authn_response_get(LassoProfile *profile) { + if (profile->response_type == lassoMessageTypeAuthnResponse) + return LASSO_AUTHN_RESPONSE(profile->response); + else + return NULL; + } + LassoRequest* LassoProfile_request_get(LassoProfile *profile) { + if (profile->request_type == lassoMessageTypeRequest) + return LASSO_REQUEST(profile->request); + else + return NULL; + } + + LassoResponse* LassoProfile_response_get(LassoProfile *profile) { + if (profile->response_type == lassoMessageTypeResponse) + return LASSO_RESPONSE(profile->response); + else + return NULL; + } %} /* Methods */ |
