summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-08-30 12:19:39 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-08-30 12:19:39 +0000
commit340dae24ec7f0fb196e9d18e5ec330dd3907c6a1 (patch)
tree1f5b050ba4ec76793d3db00cb82ca5366c97db0f
parentdf435e4254dcce573652fc4852bc5f607193a422 (diff)
downloadlasso-340dae24ec7f0fb196e9d18e5ec330dd3907c6a1.tar.gz
lasso-340dae24ec7f0fb196e9d18e5ec330dd3907c6a1.tar.xz
lasso-340dae24ec7f0fb196e9d18e5ec330dd3907c6a1.zip
Added lasso_logout_new_from_dump(). Need to be tested
-rw-r--r--lasso/id-ff/logout.c126
1 files changed, 66 insertions, 60 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 9c8542bd..edb863ad 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -1112,79 +1112,85 @@ lasso_logout_new(LassoServer *server,
LassoLogout*
lasso_logout_new_from_dump(LassoServer *server,
- gchar *dump)
+ gchar *dump)
{
- LassoLogout *logout;
+ LassoLogout *logout;
+ LassoProfile *profile;
+ LassoNode *node_dump, *request_node, *response_node;
+ LassoNode *initial_request_node, *initial_response_node;
+ gchar *type, *export, *initial_remote_providerID;
g_return_val_if_fail(LASSO_IS_SERVER(server), NULL);
g_return_val_if_fail(dump != NULL, NULL);
-/* logout = LASSO_LOGOUT(g_object_new(LASSO_TYPE_LOGOUT, */
-/* "server", lasso_server_copy(server), */
-/* NULL)); */
+ logout = LASSO_LOGOUT(g_object_new(LASSO_TYPE_LOGOUT,
+ "server", lasso_server_copy(server),
+ NULL));
-/* node_dump = lasso_node_new_from_dump(dump); */
+ node_dump = lasso_node_new_from_dump(dump);
/* profile attributes */
-/* LASSO_PROFILE(logout)->nameIdentifier = lasso_node_get_child_content(node_dump, "NameIdentifier", */
-/* lassoLassoHRef, NULL); */
-/* LASSO_PROFILE(logout)->remote_providerID = lasso_node_get_child_content(node_dump, "RemoteProviderID", */
-/* lassoLassoHRef, NULL); */
-/* LASSO_PROFILE(logout)->msg_url = lasso_node_get_child_content(node_dump, "MsgUrl", */
-/* lassoLassoHRef, NULL); */
-/* LASSO_PROFILE(logout)->msg_body = lasso_node_get_child_content(node_dump, "MsgBody", */
-/* lassoLassoHRef, NULL); */
-/* LASSO_PROFILE(logout)->msg_relayState = lasso_node_get_child_content(node_dump, "MsgRelayState", */
-/* lassoLassoHRef, NULL); */
-
+ profile->nameIdentifier = lasso_node_get_child_content(node_dump, "NameIdentifier",
+ lassoLassoHRef, NULL);
+ profile->remote_providerID = lasso_node_get_child_content(node_dump, "RemoteProviderID",
+ lassoLassoHRef, NULL);
+ profile->msg_url = lasso_node_get_child_content(node_dump, "MsgUrl",
+ lassoLassoHRef, NULL);
+ profile->msg_body = lasso_node_get_child_content(node_dump, "MsgBody",
+ lassoLassoHRef, NULL);
+ profile->msg_relayState = lasso_node_get_child_content(node_dump, "MsgRelayState",
+ lassoLassoHRef, NULL);
/* rebuild request */
-/* type = lasso_node_get_child_content(node_dump, "RequestType", lassoLassoHRef, NULL); */
-/* LASSO_PROFILE(logout)->request_type = atoi(type); */
-/* xmlFree(type); */
-
-/* if (LASSO_PROFILE(logout)->request_type == lassoMessageTypeLogoutRequest) { */
-/* request_node = lasso_node_get_child(node_dump, "LogoutRequest", lassoLibHRef, NULL); */
-/* } */
-/* if (request_node != NULL) { */
-/* export = lasso_node_export(request_node); */
-/* if (LASSO_PROFILE(logout)->request_type == lassoMessageTypeLogoutRequest) { */
-/* LASSO_PROFILE(logout)->request = lasso_logout_request_new_from_export(export, */
-/* lassoNodeExportTypeXml); */
-/* g_free(export); */
-/* lasso_node_destroy(request_node); */
-/* } */
-
- /* /\* rebuild response *\/ */
-/* type = lasso_node_get_child_content(node_dump, "ResponseType", lassoLassoHRef, NULL); */
-/* LASSO_PROFILE(login)->response_type = atoi(type); */
-/* xmlFree(type); */
-
-/* if (LASSO_PROFILE(logout)->response_type == lassoMessageTypeAuthnResponse) { */
-/* response_node = lasso_node_get_child(node_dump, "AuthnResponse", lassoLibHRef, NULL); */
-/* } */
-/* else if (LASSO_PROFILE(logout)->response_type == lassoMessageTypeResponse) { */
-/* response_node = lasso_node_get_child(node_dump, "Response", lassoSamlProtocolHRef, NULL); */
-/* } */
-/* if (response_node != NULL) { */
-/* export = lasso_node_export(response_node); */
-/* if (LASSO_PROFILE(logout)->response_type == lassoMessageTypeAuthnResponse) { */
-/* LASSO_PROFILE(logout)->response = lasso_authn_response_new_from_export(export, */
-/* lassoNodeExportTypeXml); */
-/* } */
-/* else if (LASSO_PROFILE(logout)->response_type == lassoMessageTypeResponse) { */
-/* LASSO_PROFILE(logout)->response = lasso_response_new_from_export(export, */
-/* lassoNodeExportTypeXml); */
-/* } */
-/* g_free(export); */
-/* lasso_node_destroy(response_node); */
-/* } */
+ request_node = lasso_node_get_child(node_dump, "LogoutRequest", lassoLibHRef, NULL);
+ if (request_node != NULL) {
+ export = lasso_node_export(request_node);
+ profile->request = lasso_logout_request_new_from_export(export,
+ lassoNodeExportTypeXml);
+ g_free(export);
+ lasso_node_destroy(request_node);
+ }
+
+ /* rebuild response */
+ response_node = lasso_node_get_child(node_dump, "LogoutResponse", lassoLibHRef, NULL);
+ if (response_node != NULL) {
+ export = lasso_node_export(response_node);
+ profile->response = lasso_logout_response_new_from_export(export,
+ lassoNodeExportTypeXml);
+ g_free(export);
+ lasso_node_destroy(response_node);
+ }
-/* type = lasso_node_get_child_content(node_dump, "ProviderType", lassoLassoHRef, NULL); */
-/* LASSO_PROFILE(logout)->provider_type = atoi(type); */
-/* xmlFree(type); */
+ /* provider type */
+ type = lasso_node_get_child_content(node_dump, "ProviderType", lassoLassoHRef, NULL);
+ profile->provider_type = atoi(type);
+ xmlFree(type);
/* logout attributes */
+ /* Initial logout request */
+ initial_request_node = lasso_node_get_child(node_dump, "InitialRequest", lassoLassoHRef, NULL);
+ if (initial_request_node != NULL) {
+ request_node = lasso_node_get_child(node_dump, "LogoutRequest", lassoLibHRef, NULL);
+ export = lasso_node_export(request_node);
+ profile->request = lasso_logout_request_new_from_export(export,
+ lassoNodeExportTypeXml);
+ g_free(export);
+ lasso_node_destroy(request_node);
+ }
+
+ /* Initial logout response */
+ initial_response_node = lasso_node_get_child(node_dump, "InitialResponse", lassoLassoHRef, NULL);
+ if (initial_response_node != NULL) {
+ response_node = lasso_node_get_child(node_dump, "LogoutResponse", lassoLibHRef, NULL);
+ export = lasso_node_export(response_node);
+ profile->response = lasso_logout_response_new_from_export(export,
+ lassoNodeExportTypeXml);
+ g_free(export);
+ lasso_node_destroy(response_node);
+ }
+
+ /* Initial logout remote provider id */
+ logout->initial_remote_providerID = lasso_node_get_child_content(node_dump, "InitialRemoteProviderID", lassoLassoHRef, NULL);
return(logout);