diff options
author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-05-05 23:57:25 +0000 |
---|---|---|
committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-05-05 23:57:25 +0000 |
commit | 6878046a42ead812418d5a73c5347bb5aeeb1795 (patch) | |
tree | 104e50d1543204c048da3f0c64d393a536d16bf8 | |
parent | 23d49536c103dbef67e6f4225354e5119a035640 (diff) | |
download | lasso-6878046a42ead812418d5a73c5347bb5aeeb1795.tar.gz lasso-6878046a42ead812418d5a73c5347bb5aeeb1795.tar.xz lasso-6878046a42ead812418d5a73c5347bb5aeeb1795.zip |
minor changes
-rw-r--r-- | lasso/Attic/protocols/logout_request.c | 203 | ||||
-rw-r--r-- | lasso/Attic/protocols/logout_request.h | 12 | ||||
-rw-r--r-- | lasso/Attic/protocols/logout_response.c | 271 | ||||
-rw-r--r-- | lasso/Attic/protocols/logout_response.h | 13 |
4 files changed, 242 insertions, 257 deletions
diff --git a/lasso/Attic/protocols/logout_request.c b/lasso/Attic/protocols/logout_request.c index c48ef023..f74afffd 100644 --- a/lasso/Attic/protocols/logout_request.c +++ b/lasso/Attic/protocols/logout_request.c @@ -26,17 +26,10 @@ #include <lasso/protocols/logout_request.h> #include <lasso/xml/saml_name_identifier.h> - -/*****************************************************************************/ -/* private methods */ -/*****************************************************************************/ - - /*****************************************************************************/ /* public methods */ /*****************************************************************************/ - /*****************************************************************************/ /* instance and class init functions */ /*****************************************************************************/ @@ -80,119 +73,117 @@ lasso_logout_request_new(const xmlChar *providerID, const xmlChar *nameQualifier, const xmlChar *format) { - LassoNode *request, *identifier; - - request = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_REQUEST, NULL)); - - /* RequestID */ - lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(request), - (const xmlChar *)lasso_build_unique_id(32)); - /* MajorVersion */ - lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), - lassoLibMajorVersion); - /* MinorVersion */ - lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), + LassoNode *request, *identifier; + + request = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_REQUEST, NULL)); + + /* RequestID */ + lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(request), + (const xmlChar *)lasso_build_unique_id(32)); + /* MajorVersion */ + lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), + lassoLibMajorVersion); + /* MinorVersion */ + lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), lassoLibMinorVersion); - /* IssueInstant */ - lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(request), - lasso_get_current_time()); - /* ProviderID */ - lasso_lib_logout_request_set_providerID(LASSO_LIB_LOGOUT_REQUEST(request), - providerID); - - identifier = lasso_saml_name_identifier_new(nameIdentifier); - lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(identifier), nameQualifier); - lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(identifier), format); - - lasso_lib_logout_request_set_nameIdentifier(LASSO_LIB_LOGOUT_REQUEST(request), - LASSO_SAML_NAME_IDENTIFIER(identifier)); - - return(request); + /* IssueInstant */ + lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(request), + lasso_get_current_time()); + /* ProviderID */ + lasso_lib_logout_request_set_providerID(LASSO_LIB_LOGOUT_REQUEST(request), + providerID); + + identifier = lasso_saml_name_identifier_new(nameIdentifier); + lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(identifier), + nameQualifier); + lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(identifier), format); + + lasso_lib_logout_request_set_nameIdentifier(LASSO_LIB_LOGOUT_REQUEST(request), + LASSO_SAML_NAME_IDENTIFIER(identifier)); + + return(request); } LassoNode * -lasso_logout_request_new_from_soap(const xmlChar *soap_buffer) +lasso_logout_request_new_from_query(const xmlChar *query) { - LassoNode *request; - - LassoNode *envelope, *lassoNode_request; - xmlNodePtr xmlNode_request; + LassoNode *request, *identifier; + xmlChar *str; + GData *gd; - LassoNodeClass *class; + request = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_REQUEST, NULL)); - request = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_REQUEST, NULL)); - - envelope = lasso_node_new(NULL); - lasso_node_parse_memory(envelope, soap_buffer); - lassoNode_request = lasso_node_get_child(envelope, "LogoutRequest"); + gd = lasso_query_to_dict(query); + + /* RequestID */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RequestID"), 0); + lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); + + /* MajorVersion */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MajorVersion"), 0); + lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); + + /* MinorVersion */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MinorVersion"), 0); + lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); + + /* IssueInstant */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "IssueInstance"), 0); + lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); + + /* ProviderID */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ProviderID"), 0); + lasso_lib_logout_request_set_providerID(LASSO_LIB_LOGOUT_REQUEST(request), str); + + /* NameIdentifier */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameIdentifier"), 0); + identifier = lasso_saml_name_identifier_new(str); + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameQualifier"), 0); + lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(identifier), str); + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "Format"), 0); + lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(identifier), str); - class = LASSO_NODE_GET_CLASS(lassoNode_request); - xmlNode_request = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_request)), 1); + lasso_lib_logout_request_set_nameIdentifier(LASSO_LIB_LOGOUT_REQUEST(request), identifier); + + /* RelayState */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RelayState"), 0); + if (str != NULL) + lasso_lib_logout_request_set_relayState(LASSO_LIB_LOGOUT_REQUEST(request), str); + + /* SessionIndex */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "SessionIndex"), 0); + if (str != NULL) + lasso_lib_logout_request_set_sessionIndex(LASSO_SAML_NAME_IDENTIFIER(identifier), str); + + /* consent */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "consent"), 0); + if (str != NULL) + lasso_lib_logout_request_set_consent(LASSO_LIB_LOGOUT_REQUEST(request), str); - class = LASSO_NODE_GET_CLASS(request); - class->set_xmlNode(LASSO_NODE(request), xmlNode_request); - g_object_unref(lassoNode_request); + g_datalist_clear(&gd); - return(request); + return(request); } LassoNode * -lasso_logout_request_new_from_query(const xmlChar *query) +lasso_logout_request_new_from_soap(const xmlChar *buffer) { - LassoNode *request, *identifier; - - xmlChar *str; - - GData *gd; - - request = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_REQUEST, NULL)); - - gd = lasso_query_to_dict(query); - - /* RequestID */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RequestID"), 0); - lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); + LassoNode *request; + LassoNode *envelope, *lassoNode_request; + xmlNodePtr xmlNode_request; + LassoNodeClass *class; - /* MajorVersion */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MajorVersion"), 0); - lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); + request = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_REQUEST, NULL)); - /* MinorVersion */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MinorVersion"), 0); - lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); - - /* IssueInstant */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "IssueInstance"), 0); - lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); - - /* ProviderID */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ProviderID"), 0); - lasso_lib_logout_request_set_providerID(LASSO_LIB_LOGOUT_REQUEST(request), str); - - /* NameIdentifier */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameIdentifier"), 0); - identifier = lasso_saml_name_identifier_new(str); - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameQualifier"), 0); - lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(identifier), str); - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "Format"), 0); - lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(identifier), str); - - lasso_lib_logout_request_set_nameIdentifier(LASSO_LIB_LOGOUT_REQUEST(request), identifier); - - /* RelayState */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RelayState"), 0); - if(str!=NULL) - lasso_lib_logout_request_set_relayState(LASSO_LIB_LOGOUT_REQUEST(request), str); - - /* SessionIndex */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "SessionIndex"), 0); - if(str!=NULL) - lasso_lib_logout_request_set_sessionIndex(LASSO_SAML_NAME_IDENTIFIER(identifier), str); - - /* consent */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "consent"), 0); - if(str!=NULL) - lasso_lib_logout_request_set_consent(LASSO_LIB_LOGOUT_REQUEST(request), str); - - return(request); + envelope = lasso_node_new_from_dump(buffer); + lassoNode_request = lasso_node_get_child(envelope, "LogoutRequest"); + + class = LASSO_NODE_GET_CLASS(lassoNode_request); + xmlNode_request = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_request)), 1); + + class = LASSO_NODE_GET_CLASS(request); + class->set_xmlNode(LASSO_NODE(request), xmlNode_request); + g_object_unref(envelope); + + return(request); } diff --git a/lasso/Attic/protocols/logout_request.h b/lasso/Attic/protocols/logout_request.h index 60b762f1..51787f1a 100644 --- a/lasso/Attic/protocols/logout_request.h +++ b/lasso/Attic/protocols/logout_request.h @@ -52,11 +52,13 @@ struct _LassoLogoutRequestClass { LassoLibLogoutRequestClass parent; }; -LASSO_EXPORT GType lasso_logout_request_get_type (void); -LASSO_EXPORT LassoNode* lasso_logout_request_new (const xmlChar *providerID, - const xmlChar *nameIdentifier, - const xmlChar *nameQualifier, - const xmlChar *format); +LASSO_EXPORT GType lasso_logout_request_get_type (void); +LASSO_EXPORT LassoNode* lasso_logout_request_new (const xmlChar *providerID, + const xmlChar *nameIdentifier, + const xmlChar *nameQualifier, + const xmlChar *format); +LASSO_EXPORT LassoNode* lasso_logout_request_new_from_query (const xmlChar *query); +LASSO_EXPORT LassoNode* lasso_logout_request_new_from_soap (const xmlChar *buffer); #ifdef __cplusplus } diff --git a/lasso/Attic/protocols/logout_response.c b/lasso/Attic/protocols/logout_response.c index 7c90f956..f2aa40bf 100644 --- a/lasso/Attic/protocols/logout_response.c +++ b/lasso/Attic/protocols/logout_response.c @@ -29,12 +29,6 @@ /* public methods */ /*****************************************************************************/ - -/*****************************************************************************/ -/* private methods */ -/*****************************************************************************/ - - /*****************************************************************************/ /* instance and class init functions */ /*****************************************************************************/ @@ -77,69 +71,113 @@ lasso_logout_response_new(const xmlChar *providerID, const xmlChar *statusCodeValue, LassoNode *request) { - LassoNode *response, *ss, *ssc; - xmlChar *inResponseTo, *recipient, *relayState; - - response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); - - /* Set ONLY required elements/attributs */ - /* ResponseID */ - lasso_samlp_response_abstract_set_responseID(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - (const xmlChar *)lasso_build_unique_id(32)); - /* MajorVersion */ - lasso_samlp_response_abstract_set_majorVersion(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - lassoLibMajorVersion); - /* MinorVersion */ - lasso_samlp_response_abstract_set_minorVersion(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - lassoLibMinorVersion); - /* IssueInstant */ - lasso_samlp_response_abstract_set_issueInstance(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - lasso_get_current_time()); - /* ProviderID */ - lasso_lib_status_response_set_providerID(LASSO_LIB_STATUS_RESPONSE(response), - providerID); - - inResponseTo = xmlNodeGetContent((xmlNodePtr)lasso_node_get_attr(request, "RequestID")); - lasso_samlp_response_abstract_set_inResponseTo(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - inResponseTo); - - - recipient = lasso_node_get_content(lasso_node_get_child(request, "ProviderID")); - lasso_samlp_response_abstract_set_recipient(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - recipient); - - relayState = lasso_node_get_content(lasso_node_get_child(request, "RelayState")); - if(relayState!=NULL) - lasso_lib_status_response_set_relayState(LASSO_LIB_STATUS_RESPONSE(response), - relayState); + LassoNode *response, *ss, *ssc; + xmlChar *inResponseTo, *recipient, *relayState; + + response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); + + /* Set ONLY required elements/attributs */ + /* ResponseID */ + lasso_samlp_response_abstract_set_responseID(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + (const xmlChar *)lasso_build_unique_id(32)); + /* MajorVersion */ + lasso_samlp_response_abstract_set_majorVersion(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + lassoLibMajorVersion); + /* MinorVersion */ + lasso_samlp_response_abstract_set_minorVersion(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + lassoLibMinorVersion); + /* IssueInstant */ + lasso_samlp_response_abstract_set_issueInstance(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + lasso_get_current_time()); + /* ProviderID */ + lasso_lib_status_response_set_providerID(LASSO_LIB_STATUS_RESPONSE(response), + providerID); + + inResponseTo = xmlNodeGetContent((xmlNodePtr)lasso_node_get_attr(request, "RequestID")); + lasso_samlp_response_abstract_set_inResponseTo(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + inResponseTo); + + + recipient = lasso_node_get_content(lasso_node_get_child(request, "ProviderID")); + lasso_samlp_response_abstract_set_recipient(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + recipient); + + relayState = lasso_node_get_content(lasso_node_get_child(request, "RelayState")); + if (relayState != NULL) + lasso_lib_status_response_set_relayState(LASSO_LIB_STATUS_RESPONSE(response), + relayState); - ss = lasso_samlp_status_new(); - ssc = lasso_samlp_status_code_new(); - lasso_samlp_status_code_set_value(LASSO_SAMLP_STATUS_CODE(ssc), - statusCodeValue); - lasso_samlp_status_set_statusCode(LASSO_SAMLP_STATUS(ss), - LASSO_SAMLP_STATUS_CODE(ssc)); - lasso_lib_status_response_set_status(LASSO_LIB_STATUS_RESPONSE(response), - LASSO_SAMLP_STATUS(ss)); - - return(response); + ss = lasso_samlp_status_new(); + ssc = lasso_samlp_status_code_new(); + lasso_samlp_status_code_set_value(LASSO_SAMLP_STATUS_CODE(ssc), + statusCodeValue); + lasso_samlp_status_set_statusCode(LASSO_SAMLP_STATUS(ss), + LASSO_SAMLP_STATUS_CODE(ssc)); + lasso_lib_status_response_set_status(LASSO_LIB_STATUS_RESPONSE(response), + LASSO_SAMLP_STATUS(ss)); + + return (response); } -// build a LogoutRespose from a soap form LogoutRequest LassoNode * -lasso_logout_response_new_from_request_soap(const xmlChar *soap_buffer, - const xmlChar *providerID, - const xmlChar *statusCodeValue) +lasso_logout_response_new_from_dump(const xmlChar *buffer) { - LassoNode *request, *response; + LassoNode *response; + + response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); + lasso_node_load_from_buffer(response, buffer); + + return (response); +} - request = lasso_logout_request_new_from_soap(soap_buffer); +// build a LogoutResponse from a query form LogoutResponse +LassoNode * +lasso_logout_response_new_from_query(const xmlChar *query) +{ + LassoNode *response; + xmlChar *relayState, *consent; + GData *gd; + + response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); - response = lasso_logout_response_new(providerID, - statusCodeValue, - request); + gd = lasso_query_to_dict(query); + + /* ResponseID */ + lasso_samlp_response_abstract_set_responseID(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ResponseID"), 0)); + + /* MajorVersion */ + lasso_samlp_response_abstract_set_majorVersion(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MajorVersion"), 0)); + + /* MinorVersion */ + lasso_samlp_response_abstract_set_minorVersion(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MinorVersion"), 0)); + + /* IssueInstant */ + lasso_samlp_response_abstract_set_issueInstance(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "IssueInstance"), 0)); + + /* InResponseTo */ + lasso_samlp_response_abstract_set_inResponseTo(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "InResponseTo"), 0)); + + /* Recipient */ + lasso_samlp_response_abstract_set_recipient(LASSO_SAMLP_RESPONSE_ABSTRACT(response), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "Recipient"), 0)); + + /* ProviderID */ + lasso_lib_status_response_set_providerID(LASSO_LIB_STATUS_RESPONSE(response), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ProviderID"), 0)); + + /* RelayState */ + relayState = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RelayState"), 0); + if (relayState != NULL) + lasso_lib_status_response_set_relayState(LASSO_LIB_STATUS_RESPONSE(response), relayState); + + g_datalist_clear(&gd); - return(response); + return(response); } // build a LogoutResponse from a query form LogoutRequest @@ -148,100 +186,53 @@ lasso_logout_response_new_from_request_query(const xmlChar *query, const xmlChar *providerID, const xmlChar *statusCodeValue) { - LassoNode *request, *response; + LassoNode *request, *response; - request = lasso_logout_request_new_from_query(query); - - response = lasso_logout_response_new(providerID, - statusCodeValue, - request); + request = lasso_logout_request_new_from_query(query); + + response = lasso_logout_response_new(providerID, + statusCodeValue, + request); - return(response); + return(response); } - +// build a LogoutRespose from a soap form LogoutRequest LassoNode * -lasso_logout_response_new_from_soap(const xmlChar *soap_buffer) +lasso_logout_response_new_from_request_soap(const xmlChar *buffer, + const xmlChar *providerID, + const xmlChar *statusCodeValue) { - LassoNode *response; - - LassoNode *envelope, *lassoNode_response; - xmlNodePtr xmlNode_response; - - LassoNodeClass *class; + LassoNode *request, *response; - response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); + request = lasso_logout_request_new_from_soap(buffer); - envelope = lasso_node_new(NULL); - lasso_node_parse_memory(envelope, soap_buffer); - lassoNode_response = lasso_node_get_child(envelope, "LogoutResponse"); - - class = LASSO_NODE_GET_CLASS(lassoNode_response); - xmlNode_response = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_response)), 1); - - class = LASSO_NODE_GET_CLASS(response); - class->set_xmlNode(LASSO_NODE(response), xmlNode_response); - g_object_unref(lassoNode_response); + response = lasso_logout_response_new(providerID, + statusCodeValue, + request); - return(response); + return(response); } -// build a LogoutResponse from a query form LogoutResponse LassoNode * -lasso_logout_response_new_from_query(const xmlChar *query) +lasso_logout_response_new_from_soap(const xmlChar *buffer) { - LassoNode *response; + LassoNode *response; + LassoNode *envelope, *lassoNode_response; + xmlNodePtr xmlNode_response; + LassoNodeClass *class; - xmlChar *relayState, *consent; - GData *gd; + response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); - response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); - - gd = lasso_query_to_dict(query); - - /* ResponseID */ - lasso_samlp_response_abstract_set_responseID(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ResponseID"), 0)); - - /* MajorVersion */ - lasso_samlp_response_abstract_set_majorVersion(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MajorVersion"), 0)); - - /* MinorVersion */ - lasso_samlp_response_abstract_set_minorVersion(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MinorVersion"), 0)); - - /* IssueInstant */ - lasso_samlp_response_abstract_set_issueInstance(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "IssueInstance"), 0)); - - /* InResponseTo */ - lasso_samlp_response_abstract_set_inResponseTo(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "InResponseTo"), 0)); + envelope = lasso_node_new_from_dump(buffer); + lassoNode_response = lasso_node_get_child(envelope, "LogoutResponse"); - /* Recipient */ - lasso_samlp_response_abstract_set_recipient(LASSO_SAMLP_RESPONSE_ABSTRACT(response), - lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "Recipient"), 0)); - - /* ProviderID */ - lasso_lib_status_response_set_providerID(LASSO_LIB_STATUS_RESPONSE(response), - lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ProviderID"), 0)); + class = LASSO_NODE_GET_CLASS(lassoNode_response); + xmlNode_response = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_response)), 1); - /* RelayState */ - relayState = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RelayState"), 0); - if(relayState!=NULL) - lasso_lib_status_response_set_relayState(LASSO_LIB_STATUS_RESPONSE(response), relayState); - - return(response); -} - -LassoNode * -lasso_logout_response_new_from_dump(const xmlChar *buffer) -{ - LassoNode *response; - - response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); - lasso_node_parse_memory(response, buffer); - - return(response); + class = LASSO_NODE_GET_CLASS(response); + class->set_xmlNode(LASSO_NODE(response), xmlNode_response); + g_object_unref(envelope); + + return(response); } diff --git a/lasso/Attic/protocols/logout_response.h b/lasso/Attic/protocols/logout_response.h index 7eed010a..22fcfc27 100644 --- a/lasso/Attic/protocols/logout_response.h +++ b/lasso/Attic/protocols/logout_response.h @@ -57,18 +57,19 @@ LASSO_EXPORT LassoNode* lasso_logout_response_new (const xmlC const xmlChar *statusCodeValue, LassoNode *request); -LASSO_EXPORT LassoNode* lasso_logout_response_new_from_request_soap (const xmlChar *soap_buffer, - const xmlChar *providerID, - const xmlChar *statusCodeValue); +LASSO_EXPORT LassoNode* lasso_logout_response_new_from_dump (const xmlChar *buffer); + +LASSO_EXPORT LassoNode* lasso_logout_response_new_from_query (const xmlChar *query); LASSO_EXPORT LassoNode* lasso_logout_response_new_from_request_query (const xmlChar *query, const xmlChar *providerID, const xmlChar *statusCodeValue); -LASSO_EXPORT LassoNode* lasso_logout_response_new_from_soap (const xmlChar *soap_buffer); - +LASSO_EXPORT LassoNode* lasso_logout_response_new_from_request_soap (const xmlChar *buffer, + const xmlChar *providerID, + const xmlChar *statusCodeValue); -LASSO_EXPORT LassoNode *lasso_logout_response_new_from_dump (const xmlChar *buffer); +LASSO_EXPORT LassoNode* lasso_logout_response_new_from_soap (const xmlChar *buffer); #ifdef __cplusplus } |