diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-07-26 16:01:59 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-07-26 16:01:59 +0000 |
| commit | c3fa9bdbe41f4d1076fecec4aaa4aaa4a8caec2d (patch) | |
| tree | 5c6f4c001df51dc6fab5d9dfca60bffcae9407b4 | |
| parent | ae959a9e38e85986b8e8a910cec9aaca1274565b (diff) | |
| download | lasso-c3fa9bdbe41f4d1076fecec4aaa4aaa4a8caec2d.tar.gz lasso-c3fa9bdbe41f4d1076fecec4aaa4aaa4a8caec2d.tar.xz lasso-c3fa9bdbe41f4d1076fecec4aaa4aaa4a8caec2d.zip | |
acces to RelayState in logout object
| -rw-r--r-- | lasso/id-ff/logout.c | 48 | ||||
| -rw-r--r-- | lasso/id-ff/logout.h | 25 | ||||
| -rw-r--r-- | python/environs/py_logout.c | 26 | ||||
| -rw-r--r-- | python/lasso.py | 28 |
4 files changed, 75 insertions, 52 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index 1bf252d6..99b40a8a 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -25,6 +25,9 @@ #include <lasso/environs/logout.h> +#define LASSO_LOGOUT_NODE "LassoLogout" +#define LASSO_REMOTE_PROVIDERID_NODE "RemoteProviderID" + static GObjectClass *parent_class = NULL; struct _LassoLogoutPrivate @@ -40,9 +43,20 @@ gchar * lasso_logout_dump(LassoLogout *logout) { gchar *dump = NULL; + LassoNode *logout_node = NULL; + LassoNodeClass *logout_class = NULL; g_return_val_if_fail(LASSO_IS_LOGOUT(logout), NULL); + logout_node = lasso_node_new(); + logout_class = LASSO_NODE_GET_CLASS(logout_node); + logout_class->set_name(logout_node, LASSO_LOGOUT_NODE); + + /* back up */ +/* lasso_node_add_child(logout_node, logout->first_request); */ +/* lasso_node_add_child(logout_node, logout->first_response); */ +/* lasso_node_set_prop(logout_node, LASSO_REMOTE_PROVIDERID_NODE, logout->first_remote_providerID); */ + return(dump); } @@ -163,7 +177,9 @@ lasso_logout_get_next_providerID(LassoLogout *logout) current_provider_id = g_strdup(g_ptr_array_index(profileContext->user->assertion_providerIDs, i)); if(logout->first_remote_providerID!=NULL){ if(xmlStrEqual(current_provider_id, logout->first_remote_providerID)){ - /* message(G_LOG_LEVEL_INFO, "It's the ProviderID of the SP requester (%s) : %s, pass it\n", logout->first_remote_providerID, current_provider_id); */ + debug("It's the ProviderID of the SP requester (%s) : %s, pass it\n", + logout->first_remote_providerID, + current_provider_id); xmlFree(current_provider_id); continue; } @@ -224,7 +240,7 @@ lasso_logout_init_request(LassoLogout *logout, } break; default: - message(G_LOG_LEVEL_ERROR, "Unknown provider type\n"); + message(G_LOG_LEVEL_ERROR, "Invalid provider type\n"); return(-4); } @@ -270,8 +286,8 @@ gint lasso_logout_load_user_dump(LassoLogout *logout, } gint lasso_logout_load_request_msg(LassoLogout *logout, - gchar *request_msg, - lassoHttpMethods request_method) + gchar *request_msg, + lassoHttpMethods request_method) { LassoProfileContext *profileContext; @@ -290,10 +306,10 @@ gint lasso_logout_load_request_msg(LassoLogout *logout, profileContext->request = lasso_logout_request_new_from_export(request_msg, lassoNodeExportTypeQuery); break; case lassoHttpMethodGet: - message(G_LOG_LEVEL_WARNING, "TODO, implement the get method\n"); + debug("TODO, implement the get method\n"); break; default: - message(G_LOG_LEVEL_ERROR, "Unknown request method\n"); + message(G_LOG_LEVEL_ERROR, "Invalid request method\n"); return(-3); } if(profileContext->request==NULL){ @@ -302,8 +318,10 @@ gint lasso_logout_load_request_msg(LassoLogout *logout, } /* get the NameIdentifier to load user dump */ - LASSO_PROFILE_CONTEXT(logout)->nameIdentifier = lasso_node_get_child_content(profileContext->request, - "NameIdentifier", NULL); + profileContext->nameIdentifier = lasso_node_get_child_content(profileContext->request, + "NameIdentifier", NULL); + profileContext->msg_relayState = lasso_node_get_child_content(profileContext->request, + "RelayState", NULL); return(0); } @@ -501,7 +519,7 @@ lasso_logout_dispose(LassoLogout *logout) } logout->private->dispose_has_run = TRUE; - debug("ProfileContext object 0x%x disposed ...\n", logout); + debug("Logout object 0x%x disposed ...\n", logout); /* unref reference counted objects */ lasso_node_destroy(logout->first_request); @@ -575,9 +593,8 @@ GType lasso_logout_get_type() { } LassoLogout * -lasso_logout_new(lassoProviderTypes provider_type, - LassoServer *server, - LassoUser *user) +lasso_logout_new(LassoServer *server, + lassoProviderTypes provider_type) { LassoLogout *logout; @@ -585,10 +602,9 @@ lasso_logout_new(lassoProviderTypes provider_type, /* set the logout object */ logout = g_object_new(LASSO_TYPE_LOGOUT, - "provider_type", provider_type, - "server", server, - "user", user, - NULL); + "server", server, + "provider_type", provider_type, + NULL); return(logout); } diff --git a/lasso/id-ff/logout.h b/lasso/id-ff/logout.h index 42644ca7..8f300820 100644 --- a/lasso/id-ff/logout.h +++ b/lasso/id-ff/logout.h @@ -65,10 +65,9 @@ struct _LassoLogoutClass { LASSO_EXPORT GType lasso_logout_get_type (void); -LASSO_EXPORT LassoLogout* lasso_logout_new (lassoProviderTypes provider_type, - LassoServer *server, - LassoUser *user); - +LASSO_EXPORT LassoLogout* lasso_logout_new (LassoServer *server, + lassoProviderTypes provider_type); + LASSO_EXPORT gint lasso_logout_build_request_msg (LassoLogout *logout); LASSO_EXPORT gint lasso_logout_build_response_msg (LassoLogout *logout); @@ -78,25 +77,25 @@ LASSO_EXPORT void lasso_logout_destroy (LassoLogout *log LASSO_EXPORT gchar* lasso_logout_get_next_providerID (LassoLogout *logout); LASSO_EXPORT gint lasso_logout_init_request (LassoLogout *logout, - gchar *remote_providerID); + gchar *remote_providerID); LASSO_EXPORT gint lasso_logout_load_user_dump (LassoLogout *logout, - gchar *user_dump); + gchar *user_dump); LASSO_EXPORT gint lasso_logout_load_request_msg (LassoLogout *logout, - gchar *request_msg, - lassoHttpMethods request_method); + gchar *request_msg, + lassoHttpMethods request_method); LASSO_EXPORT gint lasso_logout_process_request (LassoLogout *logout); LASSO_EXPORT gint lasso_logout_process_request_msg (LassoLogout *logout, - gchar *request_msg, - lassoHttpMethods request_method); + gchar *request_msg, + lassoHttpMethods request_method); LASSO_EXPORT gint lasso_logout_process_response_msg (LassoLogout *logout, - gchar *response_msg, - lassoHttpMethods response_method); - + gchar *response_msg, + lassoHttpMethods response_method); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/python/environs/py_logout.c b/python/environs/py_logout.c index f2aef5a1..0146c844 100644 --- a/python/environs/py_logout.c +++ b/python/environs/py_logout.c @@ -25,6 +25,8 @@ #include "../lassomod.h" +#include "../xml/py_xml.h" + #include "py_logout.h" PyObject *LassoLogout_wrap(LassoLogout *logout) { @@ -57,16 +59,20 @@ PyObject *logout_getattr(PyObject *self, PyObject *args) { if (!strcmp(attr, "__members__")) return Py_BuildValue("[ssss]", "user", "msg_url", "msg_body", "nameIdentifier", "msg_relayState"); - if (!strcmp(attr, "user")) - return (LassoUser_wrap(LASSO_PROFILE_CONTEXT(logout)->user)); if (!strcmp(attr, "msg_url")) return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->msg_url)); if (!strcmp(attr, "msg_body")) return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->msg_body)); - if (!strcmp(attr, "nameIdentifier")) - return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->nameIdentifier)); if (!strcmp(attr, "msg_relayState")) return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->msg_relayState)); + if (!strcmp(attr, "nameIdentifier")) + return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->nameIdentifier)); + if (!strcmp(attr, "request")) + return (LassoNode_wrap(LASSO_PROFILE_CONTEXT(logout)->request)); + if (!strcmp(attr, "response")) + return (LassoNode_wrap(LASSO_PROFILE_CONTEXT(logout)->response)); + if (!strcmp(attr, "user")) + return (LassoUser_wrap(LASSO_PROFILE_CONTEXT(logout)->user)); Py_INCREF(Py_None); return (Py_None); @@ -75,19 +81,17 @@ PyObject *logout_getattr(PyObject *self, PyObject *args) { PyObject *logout_new(PyObject *self, PyObject *args) { gint provider_type; - PyObject *server_obj, *user_obj; + PyObject *server_obj; LassoLogout *logout; - if (CheckArgs(args, "IOo:logout_new")) { - if(!PyArg_ParseTuple(args, (char *) "IO|O:logout_new", - &provider_type, &server_obj, &user_obj)) + if (CheckArgs(args, "OI:logout_new")) { + if(!PyArg_ParseTuple(args, (char *) "Oi:logout_new", + &server_obj, &provider_type)) return NULL; } else return NULL; - logout = lasso_logout_new(provider_type, - LassoServer_get(server_obj), - LassoUser_get(user_obj)); + logout = lasso_logout_new(LassoServer_get(server_obj), provider_type); return (LassoLogout_wrap(logout)); } diff --git a/python/lasso.py b/python/lasso.py index 1190445a..2f77c19a 100644 --- a/python/lasso.py +++ b/python/lasso.py @@ -990,26 +990,30 @@ class Logout: def __isprivate(self, name): return name == '_o' - def __init__(self, _obj): - """ - The constructor - """ - self._o = _obj - def __getattr__(self, name): if self.__isprivate(name): return self.__dict__[name] if name[:2] == "__" and name[-2:] == "__" and name != "__members__": raise AttributeError, name - ret = lassomod.logout_getattr(self, name) - if ret: - if name=="user": - ret = User(_obj=ret) + if ret is None: + return None + if name == "user": + ret = User(_obj=ret) + if name == "request": + ret = LogoutRequest(_obj=ret) + if name == "response": + ret = LogoutResponse(_obj=ret) return ret - def new(cls, provider_type, server, user = None): - obj = lassomod.logout_new(provider_type, server, user) + def __init__(self, _obj): + """ + The constructor + """ + self._o = _obj + + def new(cls, server, provider_type): + obj = lassomod.logout_new(server, provider_type) return Logout(obj) new = classmethod(new) |
