summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/lasso.py32
-rw-r--r--swig/Lasso.i87
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 */