diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2005-08-24 15:22:06 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2005-08-24 15:22:06 +0000 |
| commit | cec31c9bbb2353c919cbaba5f74dfcbca26b05d8 (patch) | |
| tree | 479dd7479145f3f53699682207428ab4d484702d | |
| parent | b7b6579eb0482500b43ee797d99c86c908ba8e66 (diff) | |
| download | lasso-cec31c9bbb2353c919cbaba5f74dfcbca26b05d8.tar.gz lasso-cec31c9bbb2353c919cbaba5f74dfcbca26b05d8.tar.xz lasso-cec31c9bbb2353c919cbaba5f74dfcbca26b05d8.zip | |
Removed prefix and href in lasso_profile_service_init_modify, lasso_profile_service_process_modify_msg, lasso_profile_service_process_response_msg, lasso_profile_service_validate_modify
| -rw-r--r-- | lasso/id-wsf/profile_service.c | 115 |
1 files changed, 48 insertions, 67 deletions
diff --git a/lasso/id-wsf/profile_service.c b/lasso/id-wsf/profile_service.c index befcb815..a0301649 100644 --- a/lasso/id-wsf/profile_service.c +++ b/lasso/id-wsf/profile_service.c @@ -112,8 +112,8 @@ lasso_profile_service_add_query_item(LassoProfileService *service, * Return value: 0 on success; or a negative value otherwise. **/ gint -lasso_profile_service_init_query(LassoProfileService *service, - const char *select, const char *item_id) +lasso_profile_service_init_query(LassoProfileService *service, const char *select, + const char *item_id) { LassoWsfProfile *profile; LassoDstQuery *query; @@ -354,23 +354,17 @@ lasso_profile_service_process_query_response_msg(LassoProfileService *service, c } -LassoDstModification* -lasso_profile_service_init_modify(LassoProfileService *service, - const gchar *prefix, - const gchar *href, - LassoDiscoResourceOffering *resourceOffering, - LassoDiscoDescription *description, - const gchar *select) +gint +lasso_profile_service_init_modify(LassoProfileService *service, const gchar *select) { LassoDstModification *modification; LassoWsfProfile *profile; + LassoDiscoResourceOffering *offering; + LassoDiscoDescription *description; 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); profile = LASSO_WSF_PROFILE(service); @@ -380,75 +374,72 @@ lasso_profile_service_init_modify(LassoProfileService *service, 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); + offering = service->private_data->offering; + + modify->hrefServiceType = g_strdup(offering->ServiceInstance->ServiceType); + if (strcmp(modify->hrefServiceType, LASSO_PP_HREF) == 0) { + modify->prefixServiceType = g_strdup(LASSO_PP_PREFIX); + } + else if (strcmp(modify->hrefServiceType, LASSO_EP_HREF) == 0) { + modify->prefixServiceType = g_strdup(LASSO_EP_PREFIX); + } + else { + /* unknown service type, (needs registration mechanism) */ + return LASSO_ERROR_UNDEFINED; + } /* get ResourceID / EncryptedResourceID */ - if (resourceOffering->ResourceID != NULL) { - LASSO_DST_MODIFY(profile->request)->ResourceID = resourceOffering->ResourceID; + if (offering->ResourceID) { + modify->ResourceID = offering->ResourceID; + } + else if (offering->EncryptedResourceID) { + modify->EncryptedResourceID = offering->EncryptedResourceID; } else { - LASSO_DST_MODIFY(profile->request)->EncryptedResourceID = \ - resourceOffering->EncryptedResourceID; + /* XXX: no resource id, implied:resource, etc. */ + return LASSO_ERROR_UNIMPLEMENTED; } + 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); + /* set msg_url */ /* TODO : implement WSDLRef */ if (description->Endpoint) { profile->msg_url = g_strdup(description->Endpoint); } - return modification; + return 0; } gint -lasso_profile_service_process_modify_msg(LassoProfileService *service, - const gchar *prefix, /* FIXME : must be get from message */ - const gchar *href, /* FIXME : must be get from message */ - const gchar *modify_soap_msg) +lasso_profile_service_process_modify_msg(LassoProfileService *service, const gchar *modify_soap_msg) { - LassoDstModifyResponse *response; - LassoSoapBindingCorrelation *correlation; - LassoSoapEnvelope *envelope; - LassoUtilityStatus *status; + LassoDstModify *modify; 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); + int rc; profile = LASSO_WSF_PROFILE(service); + rc = lasso_wsf_profile_process_soap_request_msg(profile, modify_soap_msg); + if (rc) { + return rc; + } - 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); - - 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); - 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); + modify = LASSO_DST_MODIFY(profile->request); + if (modify->ResourceID) + service->resource_id = g_object_ref(modify->ResourceID); + else if (modify->EncryptedResourceID) + service->encrypted_resource_id = g_object_ref(modify->EncryptedResourceID); + else { + return LASSO_ERROR_UNIMPLEMENTED; /* implied ? */ + } - return 0; -} + return 0;} gint lasso_profile_service_process_modify_response_msg(LassoProfileService *service, - const gchar *prefix, - const gchar *href, const gchar *soap_msg) { LassoDstModifyResponse *response; @@ -466,15 +457,6 @@ lasso_profile_service_process_modify_response_msg(LassoProfileService *service, return 0; } -gint -lasso_profile_service_validate_modify(LassoProfileService *service, - const gchar *prefix, - const gchar *href) -{ - - return -1; -} - /*****************************************************************************/ /* private methods */ @@ -594,9 +576,8 @@ lasso_profile_service_new_full(LassoServer *server, LassoDiscoResourceOffering * service = lasso_profile_service_new(server); if (service == NULL) return NULL; - + service->private_data->offering = g_object_ref(offering); return service; } - |
