diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2005-04-11 12:17:37 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2005-04-11 12:17:37 +0000 |
| commit | 376201e02a3954ab0bb4b99a40d4276b2f9d501e (patch) | |
| tree | 23eb15c921ef693e6c84ad57c21dd7113119583f | |
| parent | 5efb71d36c1882dd41ebbb4bf5d4982fcb2447c3 (diff) | |
Liberty wsf SOAP binding.
| -rw-r--r-- | lasso/id-wsf/profile_service.c | 107 |
1 files changed, 75 insertions, 32 deletions
diff --git a/lasso/id-wsf/profile_service.c b/lasso/id-wsf/profile_service.c index cb6767e0..f5c06016 100644 --- a/lasso/id-wsf/profile_service.c +++ b/lasso/id-wsf/profile_service.c @@ -27,6 +27,7 @@ #include <lasso/xml/dst_query_response.h> #include <lasso/xml/dst_modify.h> #include <lasso/xml/dst_modify_response.h> +#include <lasso/xml/soap_binding_correlation.h> /*****************************************************************************/ /* public methods */ @@ -106,6 +107,9 @@ lasso_profile_service_init_modify(LassoProfileService *service, LassoDstModification *modification; LassoWsfProfile *profile; + LassoSoapEnvelope *envelope; + LassoDstModify *modify; + g_return_val_if_fail(LASSO_IS_PROFILE_SERVICE(service), NULL); g_return_val_if_fail(LASSO_IS_DISCO_RESOURCE_OFFERING(resourceOffering), NULL); g_return_val_if_fail(LASSO_IS_DISCO_DESCRIPTION(description), NULL); @@ -114,10 +118,17 @@ lasso_profile_service_init_modify(LassoProfileService *service, /* init Modify */ modification = lasso_dst_modification_new(select); - profile->request = LASSO_NODE(lasso_dst_modify_new(modification)); + + modify = lasso_dst_modify_new(modification); + profile->request = LASSO_NODE(modify); + LASSO_DST_MODIFY(profile->request)->prefixServiceType = g_strdup(prefix); LASSO_DST_MODIFY(profile->request)->hrefServiceType = g_strdup(href); + envelope = lasso_wsf_profile_build_soap_envelope(NULL); + LASSO_WSF_PROFILE(service)->soap_envelope_request = envelope; + envelope->Body->any = g_list_append(envelope->Body->any, modify); + /* get ResourceID / EncryptedResourceID */ if (resourceOffering->ResourceID != NULL) { LASSO_DST_MODIFY(profile->request)->ResourceID = resourceOffering->ResourceID; @@ -147,6 +158,9 @@ lasso_profile_service_init_query(LassoProfileService *service, LassoDstQueryItem *query_item; LassoWsfProfile *profile; + LassoSoapEnvelope *envelope; + LassoDstQuery *query; + g_return_val_if_fail(LASSO_IS_PROFILE_SERVICE(service), NULL); g_return_val_if_fail(LASSO_IS_DISCO_RESOURCE_OFFERING(resourceOffering), NULL); g_return_val_if_fail(LASSO_IS_DISCO_DESCRIPTION(description), NULL); @@ -156,10 +170,17 @@ lasso_profile_service_init_query(LassoProfileService *service, /* init Query */ query_item = lasso_dst_query_item_new(select); - profile->request = LASSO_NODE(lasso_dst_query_new(query_item)); + + query = lasso_dst_query_new(query_item); + profile->request = LASSO_NODE(query); + LASSO_DST_QUERY(profile->request)->prefixServiceType = g_strdup(prefix); LASSO_DST_QUERY(profile->request)->hrefServiceType = g_strdup(href); + envelope = lasso_wsf_profile_build_soap_envelope(NULL); + LASSO_WSF_PROFILE(service)->soap_envelope_request = envelope; + envelope->Body->any = g_list_append(envelope->Body->any, query); + /* get ResourceID / EncryptedResourceID */ if (resourceOffering->ResourceID != NULL) { LASSO_DST_QUERY(profile->request)->ResourceID = resourceOffering->ResourceID; @@ -184,27 +205,35 @@ lasso_profile_service_process_modify_msg(LassoProfileService *service, const gchar *href, /* FIXME : must be get from message */ const gchar *modify_soap_msg) { - LassoDstModify *modify; - LassoWsfProfile *profile; + LassoDstModifyResponse *response; + LassoSoapBindingCorrelation *correlation; + LassoSoapEnvelope *envelope; LassoUtilityStatus *status; + LassoWsfProfile *profile; + gchar *messageId; g_return_val_if_fail(LASSO_IS_PROFILE_SERVICE(service), -1); g_return_val_if_fail(modify_soap_msg != NULL, -1); profile = LASSO_WSF_PROFILE(service); - modify = g_object_new(LASSO_TYPE_DST_MODIFY, NULL); - lasso_node_init_from_message(LASSO_NODE(modify), modify_soap_msg); + envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(modify_soap_msg)); + LASSO_WSF_PROFILE(service)->soap_envelope_request = envelope; + LASSO_WSF_PROFILE(service)->request = LASSO_NODE(envelope->Body->any->data); - profile->request = LASSO_NODE(modify); + correlation = envelope->Header->Other->data; + messageId = correlation->messageID; + envelope = lasso_wsf_profile_build_soap_envelope(messageId); + LASSO_WSF_PROFILE(service)->soap_envelope_response = envelope; /* init QueryResponse */ status = lasso_utility_status_new(LASSO_DST_STATUS_CODE_OK); - LASSO_WSF_PROFILE(service)->response = LASSO_NODE(lasso_dst_modify_response_new(status)); - LASSO_DST_MODIFY_RESPONSE(profile->response)->prefixServiceType = \ - g_strdup(prefix); - LASSO_DST_MODIFY_RESPONSE(profile->response)->hrefServiceType = \ - g_strdup(href); + response = lasso_dst_modify_response_new(status); + LASSO_WSF_PROFILE(service)->response = LASSO_NODE(response); + LASSO_DST_MODIFY_RESPONSE(profile->response)->prefixServiceType = g_strdup(prefix); + LASSO_DST_MODIFY_RESPONSE(profile->response)->hrefServiceType = g_strdup(href); + + envelope->Body->any = g_list_append(envelope->Body->any, response); return 0; } @@ -213,28 +242,38 @@ gint lasso_profile_service_process_query_msg(LassoProfileService *service, const gchar *prefix, /* FIXME : must be get from message */ const gchar *href, /* FIXME : must be get from message */ - const gchar *query_soap_msg) + const gchar *soap_msg) { - LassoDstQuery *query; - LassoWsfProfile *profile; + LassoDstQueryResponse *response; + LassoSoapBindingCorrelation *correlation; + LassoSoapEnvelope *envelope; LassoUtilityStatus *status; + LassoWsfProfile *profile; + gchar *messageId; g_return_val_if_fail(LASSO_IS_PROFILE_SERVICE(service), -1); - g_return_val_if_fail(query_soap_msg != NULL, -1); + g_return_val_if_fail(soap_msg != NULL, -1); profile = LASSO_WSF_PROFILE(service); - query = g_object_new(LASSO_TYPE_DST_QUERY, NULL); - lasso_node_init_from_message(LASSO_NODE(query), query_soap_msg); + envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(soap_msg)); + LASSO_WSF_PROFILE(service)->soap_envelope_request = envelope; + LASSO_WSF_PROFILE(service)->request = LASSO_NODE(envelope->Body->any->data); - profile->request = LASSO_NODE(query); + correlation = envelope->Header->Other->data; + messageId = correlation->messageID; + envelope = lasso_wsf_profile_build_soap_envelope(messageId); + LASSO_WSF_PROFILE(service)->soap_envelope_response = envelope; /* init QueryResponse */ status = lasso_utility_status_new(LASSO_DST_STATUS_CODE_OK); - LASSO_WSF_PROFILE(service)->response = LASSO_NODE(lasso_dst_query_response_new(status)); + response = lasso_dst_query_response_new(status); + LASSO_WSF_PROFILE(service)->response = LASSO_NODE(response); LASSO_DST_QUERY_RESPONSE(profile->response)->prefixServiceType = g_strdup(prefix); LASSO_DST_QUERY_RESPONSE(profile->response)->hrefServiceType = g_strdup(href); + envelope->Body->any = g_list_append(envelope->Body->any, response); + return 0; } @@ -242,17 +281,19 @@ gint lasso_profile_service_process_query_response_msg(LassoProfileService *service, const gchar *prefix, const gchar *href, - const gchar *query_response_soap_msg) + const gchar *soap_msg) { - LassoDstQueryResponse *query_response; + LassoDstQueryResponse *response; + LassoSoapEnvelope *envelope; g_return_val_if_fail(LASSO_IS_PROFILE_SERVICE(service), -1); - g_return_val_if_fail(query_response_soap_msg != NULL, -1); + g_return_val_if_fail(soap_msg != NULL, -1); - query_response = g_object_new(LASSO_TYPE_DST_QUERY_RESPONSE, NULL); - lasso_node_init_from_message(LASSO_NODE(query_response), query_response_soap_msg); + envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(soap_msg)); + LASSO_WSF_PROFILE(service)->soap_envelope_response = envelope; - LASSO_WSF_PROFILE(service)->response = LASSO_NODE(query_response); + response = envelope->Body->any->data; + LASSO_WSF_PROFILE(service)->response = LASSO_NODE(response); return 0; } @@ -261,17 +302,19 @@ gint lasso_profile_service_process_modify_response_msg(LassoProfileService *service, const gchar *prefix, const gchar *href, - const gchar *modify_response_soap_msg) + const gchar *soap_msg) { - LassoDstModifyResponse *modify_response; + LassoDstModifyResponse *response; + LassoSoapEnvelope *envelope; g_return_val_if_fail(LASSO_IS_PROFILE_SERVICE(service), -1); - g_return_val_if_fail(modify_response_soap_msg != NULL, -1); + g_return_val_if_fail(soap_msg != NULL, -1); - modify_response = g_object_new(LASSO_TYPE_DST_MODIFY_RESPONSE, NULL); - lasso_node_init_from_message(LASSO_NODE(modify_response), modify_response_soap_msg); + envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(soap_msg)); + LASSO_WSF_PROFILE(service)->soap_envelope_response = envelope; - LASSO_WSF_PROFILE(service)->response = LASSO_NODE(modify_response); + response = envelope->Body->any->data; + LASSO_WSF_PROFILE(service)->response = LASSO_NODE(response); return 0; } |
