diff options
author | Frederic Peters <fpeters@entrouvert.com> | 2007-06-19 11:16:17 +0000 |
---|---|---|
committer | Frederic Peters <fpeters@entrouvert.com> | 2007-06-19 11:16:17 +0000 |
commit | d816d74c1ab629abbf733577b4e53fafb9c9d5f0 (patch) | |
tree | 1f57558debe214b69a1feaa0462735ffc37b36de | |
parent | eefdf3b58697539f0113eb3e76b5e8d83fd1da56 (diff) | |
download | lasso-d816d74c1ab629abbf733577b4e53fafb9c9d5f0.tar.gz lasso-d816d74c1ab629abbf733577b4e53fafb9c9d5f0.tar.xz lasso-d816d74c1ab629abbf733577b4e53fafb9c9d5f0.zip |
fixed class hierarchy, with ID-WSF 2 specific stuffs going into
LassoIdWsf2Profile (which now inherits from LassoProfile).
-rw-r--r-- | lasso/id-ff/profile.c | 11 | ||||
-rw-r--r-- | lasso/id-ff/profileprivate.h | 2 | ||||
-rw-r--r-- | lasso/id-wsf-2.0/data_service.c | 49 | ||||
-rw-r--r-- | lasso/id-wsf-2.0/data_service.h | 7 | ||||
-rw-r--r-- | lasso/id-wsf-2.0/discovery.c | 133 | ||||
-rw-r--r-- | lasso/id-wsf-2.0/discovery.h | 17 | ||||
-rw-r--r-- | lasso/id-wsf-2.0/profile.c | 134 | ||||
-rw-r--r-- | lasso/id-wsf-2.0/profile.h | 49 | ||||
-rw-r--r-- | swig/Lasso-wsf2.i | 8 |
9 files changed, 248 insertions, 162 deletions
diff --git a/lasso/id-ff/profile.c b/lasso/id-ff/profile.c index 82952472..bab56e1c 100644 --- a/lasso/id-ff/profile.c +++ b/lasso/id-ff/profile.c @@ -508,15 +508,6 @@ dispose(GObject *object) g_free(profile->private_data->artifact_message); profile->private_data->artifact_message = NULL; - if (profile->private_data->soap_envelope_request != NULL) { - lasso_node_destroy(LASSO_NODE(profile->private_data->soap_envelope_request)); - profile->private_data->soap_envelope_request = NULL; - } - if (profile->private_data->soap_envelope_response != NULL) { - lasso_node_destroy(LASSO_NODE(profile->private_data->soap_envelope_response)); - profile->private_data->soap_envelope_response = NULL; - } - G_OBJECT_CLASS(parent_class)->dispose(G_OBJECT(profile)); } @@ -539,8 +530,6 @@ instance_init(LassoProfile *profile) profile->private_data->dispose_has_run = FALSE; profile->private_data->artifact = NULL; profile->private_data->artifact_message = NULL; - profile->private_data->soap_envelope_request = NULL; - profile->private_data->soap_envelope_response = NULL; profile->server = NULL; profile->request = NULL; diff --git a/lasso/id-ff/profileprivate.h b/lasso/id-ff/profileprivate.h index e96ffbb1..7f484fb4 100644 --- a/lasso/id-ff/profileprivate.h +++ b/lasso/id-ff/profileprivate.h @@ -38,8 +38,6 @@ struct _LassoProfilePrivate { char *artifact; char *artifact_message; - LassoSoapEnvelope *soap_envelope_request; - LassoSoapEnvelope *soap_envelope_response; gboolean dispose_has_run; }; diff --git a/lasso/id-wsf-2.0/data_service.c b/lasso/id-wsf-2.0/data_service.c index 9300d7a3..510bd2ae 100644 --- a/lasso/id-wsf-2.0/data_service.c +++ b/lasso/id-wsf-2.0/data_service.c @@ -48,7 +48,7 @@ struct _LassoIdWsf2DataServicePrivate gint lasso_idwsf2_data_service_init_query(LassoIdWsf2DataService *service) { - LassoProfile *profile = LASSO_PROFILE(service); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service); LassoIdWsf2DstRefQuery *query; LassoWsAddrEndpointReference *epr; GList *metadata_item; @@ -60,10 +60,10 @@ lasso_idwsf2_data_service_init_query(LassoIdWsf2DataService *service) query = lasso_idwsf2_dstref_query_new(); - if (profile->request) { - lasso_node_destroy(LASSO_NODE(profile->request)); + if (LASSO_PROFILE(profile)->request) { + lasso_node_destroy(LASSO_NODE(LASSO_PROFILE(profile)->request)); } - profile->request = LASSO_NODE(query); + LASSO_PROFILE(profile)->request = LASSO_NODE(query); if (service == NULL || service->private_data == NULL || service->private_data->epr == NULL @@ -97,7 +97,7 @@ lasso_idwsf2_data_service_init_query(LassoIdWsf2DataService *service) /* Set msg_url as epr address, which is the SoapEndpoint */ if (epr->Address != NULL) { - profile->msg_url = g_strdup(epr->Address->content); + LASSO_PROFILE(profile)->msg_url = g_strdup(epr->Address->content); } else { return LASSO_PROFILE_ERROR_MISSING_ENDPOINT_REFERENCE_ADDRESS; } @@ -109,7 +109,7 @@ gint lasso_idwsf2_data_service_add_query_item(LassoIdWsf2DataService *service, const gchar *item_xpath, const gchar *item_id) { - LassoProfile *profile = LASSO_PROFILE(service); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service); LassoIdWsf2DstRefQuery *query; LassoIdWsf2DstRefQueryItem *item; @@ -118,11 +118,11 @@ lasso_idwsf2_data_service_add_query_item(LassoIdWsf2DataService *service, const g_return_val_if_fail(item_xpath != NULL, LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); g_return_val_if_fail(item_id != NULL, LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); - if (! LASSO_IS_IDWSF2_DSTREF_QUERY(profile->request)) { + if (! LASSO_IS_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request)) { return LASSO_PROFILE_ERROR_MISSING_REQUEST; } - query = LASSO_IDWSF2_DSTREF_QUERY(profile->request); + query = LASSO_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request); item = lasso_idwsf2_dstref_query_item_new_full(item_xpath, item_id); query->QueryItem = g_list_append(query->QueryItem, item); @@ -133,7 +133,7 @@ lasso_idwsf2_data_service_add_query_item(LassoIdWsf2DataService *service, const gint lasso_idwsf2_data_service_process_query_msg(LassoIdWsf2DataService *service, const gchar *message) { - LassoProfile *profile = LASSO_PROFILE(service); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service); int res = 0; g_return_val_if_fail(LASSO_IS_IDWSF2_DATA_SERVICE(service), @@ -142,11 +142,11 @@ lasso_idwsf2_data_service_process_query_msg(LassoIdWsf2DataService *service, con res = lasso_idwsf2_profile_process_soap_request_msg(profile, message); - if (! LASSO_IS_IDWSF2_DSTREF_QUERY(profile->request)) { + if (! LASSO_IS_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request)) { res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; } else { - service->type = g_strdup( - LASSO_IDWSF2_DSTREF_QUERY(profile->request)->hrefServiceType); + service->type = g_strdup(LASSO_IDWSF2_DSTREF_QUERY( + LASSO_PROFILE(profile)->request)->hrefServiceType); } return res; @@ -155,7 +155,7 @@ lasso_idwsf2_data_service_process_query_msg(LassoIdWsf2DataService *service, con gint lasso_idwsf2_data_service_parse_query_items(LassoIdWsf2DataService *service) { - LassoProfile *profile = LASSO_PROFILE(service); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service); LassoIdWsf2DstRefQuery *request; LassoIdWsf2DstRefQueryResponse *response; LassoIdWsf2UtilResponse *response2; @@ -175,17 +175,17 @@ lasso_idwsf2_data_service_parse_query_items(LassoIdWsf2DataService *service) g_return_val_if_fail(LASSO_IS_IDWSF2_DATA_SERVICE(service), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); - if (! LASSO_IS_IDWSF2_DSTREF_QUERY(profile->request)) { + if (! LASSO_IS_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request)) { return LASSO_PROFILE_ERROR_MISSING_REQUEST; } - request = LASSO_IDWSF2_DSTREF_QUERY(profile->request); + request = LASSO_IDWSF2_DSTREF_QUERY(LASSO_PROFILE(profile)->request); /* Response envelope and body */ - envelope = profile->private_data->soap_envelope_response; + envelope = profile->soap_envelope_response; response = lasso_idwsf2_dstref_query_response_new(); response->prefixServiceType = g_strdup(request->prefixServiceType); response->hrefServiceType = g_strdup(request->hrefServiceType); - profile->response = LASSO_NODE(response); + LASSO_PROFILE(profile)->response = LASSO_NODE(response); envelope->Body->any = g_list_append(envelope->Body->any, response); response2 = LASSO_IDWSF2_UTIL_RESPONSE(response); @@ -256,7 +256,7 @@ gint lasso_idwsf2_data_service_process_query_response_msg(LassoIdWsf2DataService *service, const gchar *message) { - LassoProfile *profile = LASSO_PROFILE(service); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service); LassoIdWsf2UtilResponse *response; int res; @@ -269,12 +269,12 @@ lasso_idwsf2_data_service_process_query_response_msg(LassoIdWsf2DataService *ser return res; } - if (! LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE(profile->response)) { + if (! LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE(LASSO_PROFILE(profile)->response)) { return LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; } /* Check response status code */ - response = LASSO_IDWSF2_UTIL_RESPONSE(profile->response); + response = LASSO_IDWSF2_UTIL_RESPONSE(LASSO_PROFILE(profile)->response); if (response->Status == NULL || response->Status->code == NULL) { return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE; } @@ -290,16 +290,17 @@ lasso_idwsf2_data_service_process_query_response_msg(LassoIdWsf2DataService *ser xmlNode* lasso_idwsf2_data_service_get_attribute_node(LassoIdWsf2DataService *service, const gchar *item_id) { - LassoProfile *profile = LASSO_PROFILE(service); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(service); LassoIdWsf2DstRefQueryResponse *response; LassoIdWsf2DstRefItemData *data = NULL; GList *iter; g_return_val_if_fail(LASSO_IS_IDWSF2_DATA_SERVICE(service), NULL); - g_return_val_if_fail(LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE(profile->response), NULL); + g_return_val_if_fail(LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE( + LASSO_PROFILE(profile)->response), NULL); - response = LASSO_IDWSF2_DSTREF_QUERY_RESPONSE(profile->response); + response = LASSO_IDWSF2_DSTREF_QUERY_RESPONSE(LASSO_PROFILE(profile)->response); /* If no item_id is given, return the first item */ if (item_id == NULL && response->Data != NULL && response->Data->data != NULL) { @@ -429,7 +430,7 @@ lasso_idwsf2_data_service_get_type() (GInstanceInitFunc) instance_init, }; - this_type = g_type_register_static(LASSO_TYPE_PROFILE, + this_type = g_type_register_static(LASSO_TYPE_IDWSF2_PROFILE, "LassoIdWsf2DataService", &this_info, 0); } return this_type; diff --git a/lasso/id-wsf-2.0/data_service.h b/lasso/id-wsf-2.0/data_service.h index 46f0e4f1..d3a3f669 100644 --- a/lasso/id-wsf-2.0/data_service.h +++ b/lasso/id-wsf-2.0/data_service.h @@ -31,11 +31,8 @@ extern "C" { #endif /* __cplusplus */ #include <lasso/id-wsf-2.0/profile.h> - #include <lasso/xml/xml.h> - #include <lasso/xml/id-wsf-2.0/dstref_query_item.h> - #include <lasso/xml/ws/wsa_endpoint_reference.h> @@ -56,7 +53,7 @@ typedef struct _LassoIdWsf2DataServiceClass LassoIdWsf2DataServiceClass; typedef struct _LassoIdWsf2DataServicePrivate LassoIdWsf2DataServicePrivate; struct _LassoIdWsf2DataService { - LassoProfile parent; + LassoIdWsf2Profile parent; /*< public >*/ xmlNode *data; @@ -67,7 +64,7 @@ struct _LassoIdWsf2DataService { }; struct _LassoIdWsf2DataServiceClass { - LassoProfileClass parent; + LassoIdWsf2ProfileClass parent; }; LASSO_EXPORT GType lasso_idwsf2_data_service_get_type(void); diff --git a/lasso/id-wsf-2.0/discovery.c b/lasso/id-wsf-2.0/discovery.c index eddb2643..a367a744 100644 --- a/lasso/id-wsf-2.0/discovery.c +++ b/lasso/id-wsf-2.0/discovery.c @@ -88,7 +88,7 @@ lasso_idwsf2_discovery_metadata_register_self(LassoIdWsf2Discovery *discovery, const gchar *service_type, const gchar *abstract, const gchar *soap_endpoint, const gchar *svcMDID) { - LassoProfile *profile = LASSO_PROFILE(discovery); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); LassoProvider *provider; gchar *provider_id; LassoIdWsf2DiscoSvcMetadata *metadata; @@ -99,7 +99,7 @@ lasso_idwsf2_discovery_metadata_register_self(LassoIdWsf2Discovery *discovery, g_return_val_if_fail(abstract != NULL, NULL); g_return_val_if_fail(soap_endpoint != NULL, NULL); - provider = LASSO_PROVIDER(profile->server); + provider = LASSO_PROVIDER(LASSO_PROFILE(profile)->server); provider_id = provider->ProviderID; metadata = lasso_idwsf2_disco_svc_metadata_new_full( @@ -115,7 +115,7 @@ lasso_idwsf2_discovery_metadata_register_self(LassoIdWsf2Discovery *discovery, } /* Add the metadata into the server object */ - lasso_server_add_svc_metadata(profile->server, metadata); + lasso_server_add_svc_metadata(LASSO_PROFILE(profile)->server, metadata); return g_strdup(metadata->svcMDID); } @@ -125,7 +125,7 @@ lasso_idwsf2_discovery_init_metadata_register(LassoIdWsf2Discovery *discovery, const gchar *service_type, const gchar *abstract, const gchar *disco_provider_id, const gchar *soap_endpoint) { - LassoProfile *profile = LASSO_PROFILE(discovery); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); LassoIdWsf2DiscoSvcMDRegister *metadata_register; LassoProvider *provider; gchar *sp_provider_id; @@ -138,7 +138,7 @@ lasso_idwsf2_discovery_init_metadata_register(LassoIdWsf2Discovery *discovery, g_return_val_if_fail(soap_endpoint != NULL, LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); /* Get the providerId of this SP */ - provider = LASSO_PROVIDER(profile->server); + provider = LASSO_PROVIDER(LASSO_PROFILE(profile)->server); sp_provider_id = provider->ProviderID; /* Get a MetadataRegister node */ @@ -159,7 +159,7 @@ gint lasso_idwsf2_discovery_process_metadata_register_msg(LassoIdWsf2Discovery *discovery, const gchar *message) { - LassoProfile *profile = LASSO_PROFILE(discovery); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); LassoIdWsf2DiscoSvcMDRegister *request; LassoIdWsf2DiscoSvcMDRegisterResponse *response; LassoSoapEnvelope *envelope; @@ -173,14 +173,14 @@ lasso_idwsf2_discovery_process_metadata_register_msg(LassoIdWsf2Discovery *disco /* Process request */ res = lasso_idwsf2_profile_process_soap_request_msg(profile, message); - if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER(profile->request)) { + if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER(LASSO_PROFILE(profile)->request)) { res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; } /* If the request has been correctly processed, */ /* put interesting data into the discovery object */ if (res == 0) { - request = LASSO_IDWSF2_DISCO_SVC_MD_REGISTER(profile->request); + request = LASSO_IDWSF2_DISCO_SVC_MD_REGISTER(LASSO_PROFILE(profile)->request); /* FIXME : foreach on the list instead */ if (request != NULL && request->metadata_list != NULL) { discovery->metadata = @@ -190,7 +190,8 @@ lasso_idwsf2_discovery_process_metadata_register_msg(LassoIdWsf2Discovery *disco unique_id[32] = 0; discovery->metadata->svcMDID = g_strdup(unique_id); /* Add the metadata into the server object */ - lasso_server_add_svc_metadata(profile->server, discovery->metadata); + lasso_server_add_svc_metadata(LASSO_PROFILE(profile)->server, + discovery->metadata); } } @@ -207,7 +208,7 @@ lasso_idwsf2_discovery_process_metadata_register_msg(LassoIdWsf2Discovery *disco /* XXX : May add secondary status codes here */ } - envelope = profile->private_data->soap_envelope_response; + envelope = profile->soap_envelope_response; envelope->Body->any = g_list_append(envelope->Body->any, response); return res; @@ -217,7 +218,7 @@ gint lasso_idwsf2_discovery_process_metadata_register_response_msg(LassoIdWsf2Discovery *discovery, const gchar *message) { - LassoProfile *profile = LASSO_PROFILE(discovery); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); LassoIdWsf2DiscoSvcMDRegisterResponse *response; int res = 0; @@ -228,14 +229,15 @@ lasso_idwsf2_discovery_process_metadata_register_response_msg(LassoIdWsf2Discove /* Process request */ res = lasso_idwsf2_profile_process_soap_response_msg(profile, message); - if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE(profile->response)) { + if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE(LASSO_PROFILE(profile)->response)) { res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; } /* If the response has been correctly processed, */ /* put interesting data into the discovery object */ if (res == 0) { - response = LASSO_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE(profile->response); + response = LASSO_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE( + LASSO_PROFILE(profile)->response); /* FIXME : foreach on the list instead */ if (response->SvcMDID != NULL) { discovery->svcMDID = g_strdup(response->SvcMDID->data); @@ -252,8 +254,8 @@ gint lasso_idwsf2_discovery_init_metadata_association_add(LassoIdWsf2Discovery *discovery, const gchar *svcMDID) { - LassoProfile *profile = LASSO_PROFILE(discovery); - LassoSession *session = profile->session; + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); + LassoSession *session = LASSO_PROFILE(profile)->session; LassoIdWsf2DiscoSvcMDAssociationAdd *md_association_add; LassoWsAddrEndpointReference *epr; @@ -273,7 +275,7 @@ lasso_idwsf2_discovery_init_metadata_association_add(LassoIdWsf2Discovery *disco epr = lasso_session_get_endpoint_reference(session, LASSO_IDWSF2_DISCO_HREF); if (epr != NULL) { - profile->msg_url = g_strdup(epr->Address->content); + LASSO_PROFILE(profile)->msg_url = g_strdup(epr->Address->content); } return 0; @@ -283,7 +285,7 @@ gint lasso_idwsf2_discovery_process_metadata_association_add_msg(LassoIdWsf2Discovery *discovery, const gchar *message) { - LassoProfile *profile = LASSO_PROFILE(discovery); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); LassoIdWsf2DiscoSvcMDAssociationAddResponse *response; LassoSoapEnvelope *envelope; int res = 0; @@ -295,17 +297,17 @@ lasso_idwsf2_discovery_process_metadata_association_add_msg(LassoIdWsf2Discovery /* Process request */ res = lasso_idwsf2_profile_process_soap_request_msg(profile, message); - if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(profile->request)) { + if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(LASSO_PROFILE(profile)->request)) { res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; } /* Build response */ response = lasso_idwsf2_disco_svc_md_association_add_response_new(); - envelope = profile->private_data->soap_envelope_response; + envelope = profile->soap_envelope_response; envelope->Body->any = g_list_append(envelope->Body->any, response); - profile->response = LASSO_NODE(response); + LASSO_PROFILE(profile)->response = LASSO_NODE(response); return res; } @@ -313,7 +315,7 @@ lasso_idwsf2_discovery_process_metadata_association_add_msg(LassoIdWsf2Discovery gint lasso_idwsf2_discovery_register_metadata(LassoIdWsf2Discovery *discovery) { - LassoProfile *profile = LASSO_PROFILE(discovery); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); LassoIdWsf2DiscoSvcMDAssociationAdd *request; LassoIdWsf2DiscoSvcMDAssociationAddResponse *response; LassoIdentity *identity; @@ -324,27 +326,29 @@ lasso_idwsf2_discovery_register_metadata(LassoIdWsf2Discovery *discovery) LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); /* verify if identity already exists else create it */ - if (profile->identity == NULL) { - profile->identity = lasso_identity_new(); + if (LASSO_PROFILE(profile)->identity == NULL) { + LASSO_PROFILE(profile)->identity = lasso_identity_new(); } - identity = profile->identity; + identity = LASSO_PROFILE(profile)->identity; - if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(profile->request)) { + if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(LASSO_PROFILE(profile)->request)) { res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; - } else if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(profile->response)) { + } else if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE( + LASSO_PROFILE(profile)->response)) { res = LASSO_PROFILE_ERROR_MISSING_RESPONSE; } /* If the request has been correctly processed, */ /* put interesting data into the discovery object */ - request = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(profile->request); + request = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(LASSO_PROFILE(profile)->request); /* Copy the service metadatas with given svcMDIDs into the identity object */ for (i = g_list_first(request->SvcMDID); i != NULL; i = g_list_next(i)) { lasso_identity_add_svc_md_id(identity, (gchar *)(i->data)); } /* Set response status code */ - response = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(profile->response); + response = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE( + LASSO_PROFILE(profile)->response); if (res == 0) { response->Status = lasso_util_status_new(LASSO_DISCO_STATUS_CODE_OK); } else { @@ -358,7 +362,7 @@ gint lasso_idwsf2_discovery_process_metadata_association_add_response_msg( LassoIdWsf2Discovery *discovery, const gchar *message) { - LassoProfile *profile = LASSO_PROFILE(discovery); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); LassoIdWsf2DiscoSvcMDAssociationAddResponse *response; int res = 0; @@ -372,12 +376,14 @@ lasso_idwsf2_discovery_process_metadata_association_add_response_msg( return res; } - if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(profile->response)) { + if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE( + LASSO_PROFILE(profile)->response)) { return LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; } /* Check response status code */ - response = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(profile->response); + response = LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE( + LASSO_PROFILE(profile)->response); if (response->Status == NULL || response->Status->code == NULL) { return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE; } @@ -399,8 +405,8 @@ lasso_idwsf2_discovery_process_metadata_association_add_response_msg( gint lasso_idwsf2_discovery_init_query(LassoIdWsf2Discovery *discovery, const gchar *security_mech_id) { - LassoProfile *profile = LASSO_PROFILE(discovery); - LassoSession *session = profile->session; + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); + LassoSession *session = LASSO_PROFILE(profile)->session; LassoWsAddrEndpointReference *epr; g_return_val_if_fail(LASSO_IS_IDWSF2_DISCOVERY(discovery), @@ -408,16 +414,17 @@ lasso_idwsf2_discovery_init_query(LassoIdWsf2Discovery *discovery, const gchar * g_return_val_if_fail(LASSO_IS_SESSION(session), LASSO_PROFILE_ERROR_SESSION_NOT_FOUND); - if (profile->request) { - lasso_node_destroy(LASSO_NODE(profile->request)); + if (LASSO_PROFILE(profile)->request) { + lasso_node_destroy(LASSO_NODE(LASSO_PROFILE(profile)->request)); } - profile->request = LASSO_NODE(lasso_idwsf2_disco_query_new()); + LASSO_PROFILE(profile)->request = LASSO_NODE(lasso_idwsf2_disco_query_new()); - lasso_idwsf2_profile_init_soap_request(profile, profile->request, LASSO_IDWSF2_DISCO_HREF); + lasso_idwsf2_profile_init_soap_request(profile, + LASSO_PROFILE(profile)->request, LASSO_IDWSF2_DISCO_HREF); epr = lasso_session_get_endpoint_reference(session, LASSO_IDWSF2_DISCO_HREF); if (epr != NULL) { - profile->msg_url = g_strdup(epr->Address->content); + LASSO_PROFILE(profile)->msg_url = g_strdup(epr->Address->content); } return 0; @@ -427,17 +434,17 @@ gint lasso_idwsf2_discovery_add_requested_service_type(LassoIdWsf2Discovery *discovery, const gchar *service_type) { - LassoProfile *profile = LASSO_PROFILE(discovery); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); LassoIdWsf2DiscoQuery *query; LassoIdWsf2DiscoRequestedService *service; g_return_val_if_fail(LASSO_IS_IDWSF2_DISCOVERY(discovery), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); - g_return_val_if_fail(LASSO_IS_IDWSF2_DISCO_QUERY(profile->request), + g_return_val_if_fail(LASSO_IS_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request), LASSO_PROFILE_ERROR_MISSING_REQUEST); - query = LASSO_IDWSF2_DISCO_QUERY(profile->request); + query = LASSO_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request); service = lasso_idwsf2_disco_requested_service_new(); service->ServiceType = g_list_append(service->ServiceType, g_strdup(service_type)); query->RequestedService = g_list_append(query->RequestedService, service); @@ -448,7 +455,7 @@ lasso_idwsf2_discovery_add_requested_service_type(LassoIdWsf2Discovery *discover gint lasso_idwsf2_discovery_process_query_msg(LassoIdWsf2Discovery *discovery, const gchar *message) { - LassoProfile *profile = LASSO_PROFILE(discovery); + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); int res = 0; @@ -459,7 +466,7 @@ lasso_idwsf2_discovery_process_query_msg(LassoIdWsf2Discovery *discovery, const /* Process request */ res = lasso_idwsf2_profile_process_soap_request_msg(profile, message); - if (! LASSO_IS_IDWSF2_DISCO_QUERY(profile->request)) { + if (! LASSO_IS_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request)) { res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; } @@ -580,9 +587,9 @@ lasso_idwsf2_discovery_build_epr(LassoIdWsf2DiscoRequestedService *service, gint lasso_idwsf2_discovery_build_query_response_eprs(LassoIdWsf2Discovery *discovery) { - LassoProfile *profile = LASSO_PROFILE(discovery); - LassoIdentity *identity = profile->identity; - LassoServer *server = profile->server; + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); + LassoIdentity *identity = LASSO_PROFILE(profile)->identity; + LassoServer *server = LASSO_PROFILE(profile)->server; LassoIdWsf2DiscoQuery* request; LassoIdWsf2DiscoRequestedService *service = NULL; LassoIdWsf2DiscoQueryResponse *response; @@ -590,14 +597,14 @@ lasso_idwsf2_discovery_build_query_response_eprs(LassoIdWsf2Discovery *discovery LassoSoapEnvelope *envelope; int res = 0; - if (! LASSO_IS_IDWSF2_DISCO_QUERY(profile->request)) { + if (! LASSO_IS_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request)) { res = LASSO_PROFILE_ERROR_MISSING_REQUEST; } else if (! LASSO_IS_IDENTITY(identity)) { res = LASSO_PROFILE_ERROR_IDENTITY_NOT_FOUND; } if (res == 0) { - request = LASSO_IDWSF2_DISCO_QUERY(profile->request); + request = LASSO_IDWSF2_DISCO_QUERY(LASSO_PROFILE(profile)->request); /* FIXME : foreach on the list instead */ if (request->RequestedService != NULL) { service = LASSO_IDWSF2_DISCO_REQUESTED_SERVICE( @@ -632,7 +639,7 @@ lasso_idwsf2_discovery_build_query_response_eprs(LassoIdWsf2Discovery *discovery /* XXX : May add secondary status codes here */ } - envelope = profile->private_data->soap_envelope_response; + envelope = profile->soap_envelope_response; envelope->Body->any = g_list_append(envelope->Body->any, response); return res; @@ -642,8 +649,8 @@ gint lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discovery, const gchar *message) { - LassoProfile *profile = LASSO_PROFILE(discovery); - LassoSession *session = profile->session; + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); + LassoSession *session = LASSO_PROFILE(profile)->session; LassoIdWsf2DiscoQueryResponse *response; int res = 0; @@ -659,12 +666,12 @@ lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discover return res; } - if (! LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE(profile->response)) { + if (! LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE(LASSO_PROFILE(profile)->response)) { return LASSO_PROFILE_ERROR_INVALID_SOAP_MSG; } /* Check response status code */ - response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(profile->response); + response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(LASSO_PROFILE(profile)->response); if (response->Status == NULL || response->Status->code == NULL) { return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE; } @@ -674,7 +681,7 @@ lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discover /* If the response has been correctly processed, */ /* put interesting data into the discovery object */ - response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(profile->response); + response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(LASSO_PROFILE(profile)->response); /* FIXME : foreach on the list instead */ if (response->EndpointReference != NULL && response->EndpointReference->data != NULL) { @@ -699,19 +706,17 @@ lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discover LassoIdWsf2DataService* lasso_idwsf2_discovery_get_service(LassoIdWsf2Discovery *discovery, const gchar *service_type) { - LassoProfile *profile = LASSO_PROFILE(discovery); - LassoSession *session = profile->session; + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(discovery); LassoIdWsf2DiscoQueryResponse *response; LassoWsAddrEndpointReference *epr = NULL; LassoIdWsf2DataService *service; g_return_val_if_fail(LASSO_IS_IDWSF2_DISCOVERY(discovery), NULL); - g_return_val_if_fail(LASSO_IS_SESSION(session), NULL); + g_return_val_if_fail(LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE( + LASSO_PROFILE(profile)->response), NULL); - g_return_val_if_fail(LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE(profile->response), NULL); - - response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(profile->response); + response = LASSO_IDWSF2_DISCO_QUERY_RESPONSE(LASSO_PROFILE(profile)->response); /* FIXME : foreach on the list instead */ if (response->EndpointReference != NULL && response->EndpointReference->data != NULL) { @@ -720,10 +725,8 @@ lasso_idwsf2_discovery_get_service(LassoIdWsf2Discovery *discovery, const gchar return NULL; } - service = lasso_idwsf2_data_service_new_full(profile->server, epr); - - /* Copy session to service object (used to get assertion identity token from the session) */ - LASSO_PROFILE(service)->session = g_object_ref(session); + service = lasso_idwsf2_data_service_new_full(LASSO_PROFILE(profile)->server, epr); + LASSO_PROFILE(service)->session = g_object_ref(LASSO_PROFILE(profile)->session); return service; } @@ -825,7 +828,7 @@ lasso_idwsf2_discovery_get_type() (GInstanceInitFunc) instance_init, }; - this_type = g_type_register_static(LASSO_TYPE_PROFILE, + this_type = g_type_register_static(LASSO_TYPE_IDWSF2_PROFILE, "LassoIdWsf2Discovery", &this_info, 0); } return this_type; diff --git a/lasso/id-wsf-2.0/discovery.h b/lasso/id-wsf-2.0/discovery.h index 07c94fae..211db289 100644 --- a/lasso/id-wsf-2.0/discovery.h +++ b/lasso/id-wsf-2.0/discovery.h @@ -42,8 +42,10 @@ extern "C" { (G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_IDWSF2_DISCOVERY, LassoIdWsf2Discovery)) #define LASSO_IDWSF2_DISCOVERY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_IDWSF2_DISCOVERY, LassoIdWsf2DiscoveryClass)) -#define LASSO_IS_IDWSF2_DISCOVERY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_IDWSF2_DISCOVERY)) -#define LASSO_IS_IDWSF2_DISCOVERY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_IDWSF2_DISCOVERY)) +#define LASSO_IS_IDWSF2_DISCOVERY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_IDWSF2_DISCOVERY)) +#define LASSO_IS_IDWSF2_DISCOVERY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_IDWSF2_DISCOVERY)) #define LASSO_IDWSF2_DISCOVERY_GET_CLASS(o) \ (G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_IDWSF2_DISCOVERY, LassoIdWsf2DiscoveryClass)) @@ -52,7 +54,7 @@ typedef struct _LassoIdWsf2DiscoveryClass LassoIdWsf2DiscoveryClass; typedef struct _LassoIdWsf2DiscoveryPrivate LassoIdWsf2DiscoveryPrivate; struct _LassoIdWsf2Discovery { - LassoProfile parent; + LassoIdWsf2Profile parent; /* FIXME : Both should be lists */ LassoIdWsf2DiscoSvcMetadata *metadata; @@ -63,7 +65,7 @@ struct _LassoIdWsf2Discovery { }; struct _LassoIdWsf2DiscoveryClass { - LassoProfileClass parent; + LassoIdWsf2ProfileClass parent; }; LASSO_EXPORT GType lasso_idwsf2_discovery_get_type(void); @@ -106,10 +108,11 @@ LASSO_EXPORT gint lasso_idwsf2_discovery_add_requested_service_type(LassoIdWsf2D LASSO_EXPORT gint lasso_idwsf2_discovery_process_query_msg(LassoIdWsf2Discovery *discovery, const gchar *message); -LASSO_EXPORT gint lasso_idwsf2_discovery_build_query_response_eprs(LassoIdWsf2Discovery *discovery); +LASSO_EXPORT gint lasso_idwsf2_discovery_build_query_response_eprs( + LassoIdWsf2Discovery *discovery); -LASSO_EXPORT gint lasso_idwsf2_discovery_process_query_response_msg(LassoIdWsf2Discovery *discovery, - const gchar *message); +LASSO_EXPORT gint lasso_idwsf2_discovery_process_query_response_msg( + LassoIdWsf2Discovery *discovery, const gchar *message); LASSO_EXPORT LassoIdWsf2DataService* lasso_idwsf2_discovery_get_service( LassoIdWsf2Discovery *discovery, const gchar *service_type); diff --git a/lasso/id-wsf-2.0/profile.c b/lasso/id-wsf-2.0/profile.c index 0de5b193..8c06df7d 100644 --- a/lasso/id-wsf-2.0/profile.c +++ b/lasso/id-wsf-2.0/profile.c @@ -51,7 +51,7 @@ /* private methods */ /*****************************************************************************/ -LassoSoapEnvelope* +static LassoSoapEnvelope* lasso_idwsf2_profile_build_soap_envelope(const char *refToMessageId, const char *providerId) { LassoSoapEnvelope *envelope; @@ -83,18 +83,18 @@ lasso_idwsf2_profile_build_soap_envelope(const char *refToMessageId, const char /*****************************************************************************/ gint -lasso_idwsf2_profile_init_soap_request(LassoProfile *profile, LassoNode *request, +lasso_idwsf2_profile_init_soap_request(LassoIdWsf2Profile *profile, LassoNode *request, gchar *service_type) { LassoSoapEnvelope *envelope; - LassoSession *session = profile->session; + LassoSession *session = LASSO_PROFILE(profile)->session; LassoSaml2Assertion *assertion; LassoWsse200401Security *wsse_security; /* Initialise soap envelope */ envelope = lasso_idwsf2_profile_build_soap_envelope(NULL, - LASSO_PROVIDER(profile->server)->ProviderID); - profile->private_data->soap_envelope_request = envelope; + LASSO_PROVIDER(LASSO_PROFILE(profile)->server)->ProviderID); + profile->soap_envelope_request = envelope; /* Add identity token (if it exists in the session) in soap header */ assertion = lasso_session_get_assertion_identity_token(session, service_type); @@ -103,7 +103,6 @@ lasso_idwsf2_profile_init_soap_request(LassoProfile *profile, LassoNode *request wsse_security = lasso_wsse_200401_security_new(); wsse_security->any = g_list_append(wsse_security->any, assertion); - envelope = profile->private_data->soap_envelope_request; envelope->Header->Other = g_list_append(envelope->Header->Other, wsse_security); } @@ -114,19 +113,19 @@ lasso_idwsf2_profile_init_soap_request(LassoProfile *profile, LassoNode *request } gint -lasso_idwsf2_profile_build_request_msg(LassoProfile *profile) +lasso_idwsf2_profile_build_request_msg(LassoIdWsf2Profile *profile) { - g_return_val_if_fail(LASSO_IS_PROFILE(profile), + g_return_val_if_fail(LASSO_IS_IDWSF2_PROFILE(profile), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); - profile->msg_body = lasso_node_export_to_xml(LASSO_NODE( - profile->private_data->soap_envelope_request)); + LASSO_PROFILE(profile)->msg_body = lasso_node_export_to_xml( + LASSO_NODE(profile->soap_envelope_request)); return 0; } gint -lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile, const gchar *message) +lasso_idwsf2_profile_process_soap_request_msg(LassoIdWsf2Profile *profile, const gchar *message) { LassoSoapEnvelope *envelope = NULL; LassoSaml2Assertion *assertion; @@ -138,18 +137,18 @@ lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile, const gchar GList *j; int res = 0; - g_return_val_if_fail(LASSO_IS_PROFILE(profile), - LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); + g_return_val_if_fail(LASSO_IS_IDWSF2_PROFILE(profile), + LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); /* Get soap request */ envelope = lasso_soap_envelope_new_from_message(message); - profile->private_data->soap_envelope_request = envelope; + profile->soap_envelope_request = envelope; - if (profile->nameIdentifier != NULL) { - lasso_node_destroy(profile->nameIdentifier); - profile->nameIdentifier = NULL; + if (LASSO_PROFILE(profile)->nameIdentifier != NULL) { + lasso_node_destroy(LASSO_PROFILE(profile)->nameIdentifier); + LASSO_PROFILE(profile)->nameIdentifier = NULL; } /* Get NameIdentifier (if exists) from the soap header */ @@ -167,7 +166,8 @@ lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile, const gchar continue; } if (LASSO_IS_SAML2_NAME_ID(assertion->Subject->NameID)) { - profile->nameIdentifier = g_object_ref(assertion->Subject->NameID); + LASSO_PROFILE(profile)->nameIdentifier = g_object_ref( + assertion->Subject->NameID); } else if (LASSO_IS_SAML2_ENCRYPTED_ELEMENT( assertion->Subject->EncryptedID)) { encrypted_id = assertion->Subject->EncryptedID; @@ -180,71 +180,137 @@ lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile, const gchar } /* Decrypt NameID */ - encryption_private_key = profile->server->private_data->encryption_private_key; - if (profile->nameIdentifier == NULL && encrypted_id != NULL + encryption_private_key = LASSO_PROFILE( + profile)->server->private_data->encryption_private_key; + if (LASSO_PROFILE(profile)->nameIdentifier == NULL && encrypted_id != NULL && encryption_private_key != NULL) { decrypted_name_id = lasso_node_decrypt(encrypted_id, encryption_private_key); if (LASSO_IS_SAML2_NAME_ID(decrypted_name_id)) { - profile->nameIdentifier = decrypted_name_id; + LASSO_PROFILE(profile)->nameIdentifier = decrypted_name_id; } assertion->Subject->EncryptedID = NULL; } if (envelope != NULL && envelope->Body != NULL && envelope->Body->any != NULL) { - profile->request = LASSO_NODE(envelope->Body->any->data); + LASSO_PROFILE(profile)->request = LASSO_NODE(envelope->Body->any->data); } else { res = LASSO_SOAP_ERROR_MISSING_BODY; } - if (profile->request == NULL) { + if (LASSO_PROFILE(profile)->request == NULL) { res = LASSO_PROFILE_ERROR_MISSING_REQUEST; } /* Set soap response */ envelope = lasso_idwsf2_profile_build_soap_envelope(NULL, - LASSO_PROVIDER(profile->server)->ProviderID); - profile->private_data->soap_envelope_response = envelope; + LASSO_PROVIDER(LASSO_PROFILE(profile)->server)->ProviderID); + profile->soap_envelope_response = envelope; return res; } gint -lasso_idwsf2_profile_build_response_msg(LassoProfile *profile) +lasso_idwsf2_profile_build_response_msg(LassoIdWsf2Profile *profile) { - g_return_val_if_fail(LASSO_IS_PROFILE(profile), + g_return_val_if_fail(LASSO_IS_IDWSF2_PROFILE(profile), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); - profile->msg_body = lasso_node_export_to_xml(LASSO_NODE( - profile->private_data->soap_envelope_response)); + LASSO_PROFILE(profile)->msg_body = lasso_node_export_to_xml(LASSO_NODE( + profile->soap_envelope_response)); return 0; } gint -lasso_idwsf2_profile_process_soap_response_msg(LassoProfile *profile, const gchar *message) +lasso_idwsf2_profile_process_soap_response_msg(LassoIdWsf2Profile *profile, const gchar *message) { LassoSoapEnvelope *envelope = NULL; int res = 0; - g_return_val_if_fail(LASSO_IS_PROFILE(profile), + g_return_val_if_fail(LASSO_IS_IDWSF2_PROFILE(profile), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); /* Get soap response */ envelope = lasso_soap_envelope_new_from_message(message); - profile->private_data->soap_envelope_response = envelope; + profile->soap_envelope_response = envelope; if (envelope != NULL && envelope->Body != NULL && envelope->Body->any != NULL) { - profile->response = LASSO_NODE(envelope->Body->any->data); + LASSO_PROFILE(profile)->response = LASSO_NODE(envelope->Body->any->data); } else { res = LASSO_SOAP_ERROR_MISSING_BODY; } - if (profile->response == NULL) { + if (LASSO_PROFILE(profile)->response == NULL) { res = LASSO_PROFILE_ERROR_MISSING_RESPONSE; } return res; } +/*****************************************************************************/ +/* overridden parent class methods */ +/*****************************************************************************/ + +static LassoNodeClass *parent_class = NULL; + +static void +dispose(GObject *object) +{ + LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(object); + + if (profile->soap_envelope_request) { + lasso_node_destroy(LASSO_NODE(profile->soap_envelope_request)); + profile->soap_envelope_request = NULL; + } + + if (profile->soap_envelope_response) { + lasso_node_destroy(LASSO_NODE(profile->soap_envelope_response)); + profile->soap_envelope_response = NULL; + } + G_OBJECT_CLASS(parent_class)->dispose(object); +} + +/*****************************************************************************/ +/* instance and class init functions */ +/*****************************************************************************/ + +static void +instance_init(LassoIdWsf2Profile *profile) +{ + profile->soap_envelope_request = NULL; + profile->soap_envelope_response = NULL; +} + +static void +class_init(LassoIdWsf2ProfileClass *klass) +{ + parent_class = g_type_class_peek_parent(klass); + + G_OBJECT_CLASS(klass)->dispose = dispose; +} + +GType +lasso_idwsf2_profile_get_type() +{ + static GType this_type = 0; + + if (!this_type) { + static const GTypeInfo this_info = { + sizeof(LassoIdWsf2ProfileClass), + NULL, + NULL, + (GClassInitFunc) class_init, + NULL, + NULL, + sizeof(LassoIdWsf2Profile), + 0, + (GInstanceInitFunc) instance_init, + }; + + this_type = g_type_register_static(LASSO_TYPE_PROFILE, + "LassoIdWsf2Profile", &this_info, 0); + } + return this_type; +} diff --git a/lasso/id-wsf-2.0/profile.h b/lasso/id-wsf-2.0/profile.h index 53865de0..26b29ba8 100644 --- a/lasso/id-wsf-2.0/profile.h +++ b/lasso/id-wsf-2.0/profile.h @@ -30,25 +30,54 @@ extern "C" { #endif /* __cplusplus */ #include <lasso/id-ff/profile.h> -#include <lasso/id-ff/profileprivate.h> +#include <lasso/xml/soap_envelope.h> -LASSO_EXPORT gint lasso_idwsf2_profile_init_soap_request(LassoProfile *profile, +#define LASSO_TYPE_IDWSF2_PROFILE (lasso_idwsf2_profile_get_type()) +#define LASSO_IDWSF2_PROFILE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + LASSO_TYPE_IDWSF2_PROFILE, LassoIdWsf2Profile)) +#define LASSO_IDWSF2_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \ + LASSO_TYPE_IDWSF2_PROFILE, LassoIdWsf2ProfileClass)) +#define LASSO_IS_IDWSF2_PROFILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ + LASSO_TYPE_IDWSF2_PROFILE)) +#define LASSO_IS_IDWSF2_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + LASSO_TYPE_IDWSF2_PROFILE)) +#define LASSO_IDWSF2_PROFILE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \ + LASSO_TYPE_IDWSF2_PROFILE, LassoIdWsf2ProfileClass)) + + +typedef struct _LassoIdWsf2Profile LassoIdWsf2Profile; +typedef struct _LassoIdWsf2ProfileClass LassoIdWsf2ProfileClass; +typedef struct _LassoIdWsf2ProfilePrivate LassoIdWsf2ProfilePrivate; + +struct _LassoIdWsf2Profile { + LassoProfile parent; + + /*< private >*/ + LassoSoapEnvelope *soap_envelope_request; + LassoSoapEnvelope *soap_envelope_response; + + LassoIdWsf2ProfilePrivate *private_data; +}; + +struct _LassoIdWsf2ProfileClass { + LassoProfileClass parent; +}; + +LASSO_EXPORT GType lasso_idwsf2_profile_get_type(void); + +LASSO_EXPORT gint lasso_idwsf2_profile_init_soap_request(LassoIdWsf2Profile *profile, LassoNode *request, gchar *service_type); -LASSO_EXPORT gint lasso_idwsf2_profile_build_request_msg(LassoProfile *profile); +LASSO_EXPORT gint lasso_idwsf2_profile_build_request_msg(LassoIdWsf2Profile *profile); -LASSO_EXPORT gint lasso_idwsf2_profile_process_soap_request_msg(LassoProfile *profile, +LASSO_EXPORT gint lasso_idwsf2_profile_process_soap_request_msg(LassoIdWsf2Profile *profile, const gchar *message); -LASSO_EXPORT gint lasso_idwsf2_profile_build_response_msg(LassoProfile *profile); +LASSO_EXPORT gint lasso_idwsf2_profile_build_response_msg(LassoIdWsf2Profile *profile); -LASSO_EXPORT gint lasso_idwsf2_profile_process_soap_response_msg(LassoProfile *profile, +LASSO_EXPORT gint lasso_idwsf2_profile_process_soap_response_msg(LassoIdWsf2Profile *profile, const gchar *message); -/* Private method */ -LassoSoapEnvelope* lasso_idwsf2_profile_build_soap_envelope(const char *refToMessageId, - const char *providerId); - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/swig/Lasso-wsf2.i b/swig/Lasso-wsf2.i index d73a7192..0b2be019 100644 --- a/swig/Lasso-wsf2.i +++ b/swig/Lasso-wsf2.i @@ -260,8 +260,8 @@ typedef struct { #define LassoIdWsf2Discovery_setIdentityFromDump(self, dump) lasso_profile_set_identity_from_dump(LASSO_PROFILE(self), dump) #define LassoIdWsf2Discovery_setSessionFromDump(self, dump) lasso_profile_set_session_from_dump(LASSO_PROFILE(self), dump) -#define LassoIdWsf2Discovery_buildRequestMsg(self) lasso_idwsf2_profile_build_request_msg(LASSO_PROFILE(self)) -#define LassoIdWsf2Discovery_buildResponseMsg(self) lasso_idwsf2_profile_build_response_msg(LASSO_PROFILE(self)) +#define LassoIdWsf2Discovery_buildRequestMsg(self) lasso_idwsf2_profile_build_request_msg(LASSO_IDWSF2_PROFILE(self)) +#define LassoIdWsf2Discovery_buildResponseMsg(self) lasso_idwsf2_profile_build_response_msg(LASSO_IDWSF2_PROFILE(self)) /* Methods implementations */ @@ -432,8 +432,8 @@ typedef struct { /* Implementations of methods inherited from LassoIdWsf2Profile */ -#define LassoIdWsf2DataService_buildRequestMsg(self) lasso_idwsf2_profile_build_request_msg(LASSO_PROFILE(self)) -#define LassoIdWsf2DataService_buildResponseMsg(self) lasso_idwsf2_profile_build_response_msg(LASSO_PROFILE(self)) +#define LassoIdWsf2DataService_buildRequestMsg(self) lasso_idwsf2_profile_build_request_msg(LASSO_IDWSF2_PROFILE(self)) +#define LassoIdWsf2DataService_buildResponseMsg(self) lasso_idwsf2_profile_build_response_msg(LASSO_IDWSF2_PROFILE(self)) /* Methods implementations */ #define LassoIdWsf2DataService_initQuery lasso_idwsf2_data_service_init_query |