diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2005-08-12 11:41:58 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2005-08-12 11:41:58 +0000 |
| commit | 3d77fb20f40b5322433052f7e3dee653c4e9b18a (patch) | |
| tree | 54c655d9c746e83d73bf8df391b70b2d6b5299b6 | |
| parent | 3e13d02bd59ac18358588bec074741d6b1d846e0 (diff) | |
idwsf/pp on the attribute provider side; sth like
service = lasso.ProfileService(server)
service.processQueryMsg(soap_message)
identity = get_from(service.request.resourceId)
service.resourceData = identity.convert_to_pp_xml()
| -rw-r--r-- | lasso/id-wsf/discovery.c | 16 | ||||
| -rw-r--r-- | lasso/id-wsf/personal_profile_service.c | 8 | ||||
| -rw-r--r-- | lasso/id-wsf/personal_profile_service.h | 3 | ||||
| -rw-r--r-- | lasso/id-wsf/profile_service.c | 61 | ||||
| -rw-r--r-- | lasso/id-wsf/profile_service.h | 13 | ||||
| -rw-r--r-- | swig/Lasso-wsf.i | 45 | ||||
| -rw-r--r-- | swig/Lasso.i | 21 |
7 files changed, 114 insertions, 53 deletions
diff --git a/lasso/id-wsf/discovery.c b/lasso/id-wsf/discovery.c index 32968fdd..24853fec 100644 --- a/lasso/id-wsf/discovery.c +++ b/lasso/id-wsf/discovery.c @@ -550,6 +550,16 @@ lasso_discovery_process_modify_response_msg(LassoDiscovery *discovery, const gch return 0; } +/** + * lasso_discovery_process_query_msg: + * @discovery: a #LassoDiscovery + * @message: the disco query message + * + * Processes a disco:Query message. Rebuilds a request object from the message + * and extracts ResourceID. + * + * Return value: 0 on success; or a negative value otherwise. + **/ gint lasso_discovery_process_query_msg(LassoDiscovery *discovery, const gchar *message) { @@ -566,9 +576,11 @@ lasso_discovery_process_query_msg(LassoDiscovery *discovery, const gchar *messag if (request->ResourceID) discovery->resource_id = g_object_ref(request->ResourceID); - if (request->EncryptedResourceID) + else if (request->EncryptedResourceID) discovery->encrypted_resource_id = g_object_ref(request->EncryptedResourceID); - + else { + return LASSO_ERROR_UNIMPLEMENTED; /* implied ? */ + } return 0; } diff --git a/lasso/id-wsf/personal_profile_service.c b/lasso/id-wsf/personal_profile_service.c index 4b3a0487..9ec3f8f6 100644 --- a/lasso/id-wsf/personal_profile_service.c +++ b/lasso/id-wsf/personal_profile_service.c @@ -148,10 +148,7 @@ lasso_personal_profile_service_process_query_msg(LassoPersonalProfileService *se { g_return_val_if_fail(LASSO_IS_PERSONAL_PROFILE_SERVICE(service) == TRUE, -1); - return lasso_profile_service_process_query_msg(LASSO_PROFILE_SERVICE(service), - LASSO_PP_PREFIX, - LASSO_PP_HREF, - soap_msg); + return LASSO_ERROR_UNIMPLEMENTED; } gint @@ -205,8 +202,7 @@ lasso_personal_profile_service_set_xml_node(LassoPersonalProfileService *service g_return_val_if_fail(LASSO_IS_PERSONAL_PROFILE_SERVICE(service) == TRUE, -1); g_return_val_if_fail(xmlNode != NULL, -1); - return lasso_profile_service_set_xml_node(LASSO_PROFILE_SERVICE(service), - LASSO_PP_PREFIX, LASSO_PP_HREF, xmlNode); + return -1; } /*****************************************************************************/ diff --git a/lasso/id-wsf/personal_profile_service.h b/lasso/id-wsf/personal_profile_service.h index 81c82d03..a194971b 100644 --- a/lasso/id-wsf/personal_profile_service.h +++ b/lasso/id-wsf/personal_profile_service.h @@ -99,9 +99,6 @@ LASSO_EXPORT gint lasso_personal_profile_service_process_query_response_msg( LassoPersonalProfileService *service, const gchar *soap_msg); -LASSO_EXPORT gint lasso_personal_profile_service_set_xml_node(LassoPersonalProfileService *service, - xmlNodePtr xmlNode); - LASSO_EXPORT gint lasso_personal_profile_service_validate_modify( LassoPersonalProfileService *service); diff --git a/lasso/id-wsf/profile_service.c b/lasso/id-wsf/profile_service.c index 2083d7e9..8bdc175f 100644 --- a/lasso/id-wsf/profile_service.c +++ b/lasso/id-wsf/profile_service.c @@ -262,6 +262,41 @@ lasso_profile_service_init_query(LassoProfileService *service, const char *selec return 0; } +/** + * lasso_profile_service_process_query_msg: + * @service: a #LassoProfileService + * @message: the disco query message + * + * Processes a dst:Query message. Rebuilds a request object from the message + * and extracts ResourceID. + * + * Return value: 0 on success; or a negative value otherwise. + **/ +gint +lasso_profile_service_process_query_msg(LassoProfileService *service, const char *message) +{ + LassoDstQuery *query; + LassoWsfProfile *profile; + int rc; + + profile = LASSO_WSF_PROFILE(service); + rc = lasso_wsf_profile_process_soap_request_msg(profile, message); + if (rc) { + return rc; + } + + query = LASSO_DST_QUERY(profile->request); + if (query->ResourceID) + service->resource_id = g_object_ref(query->ResourceID); + else if (query->EncryptedResourceID) + service->encrypted_resource_id = g_object_ref(query->EncryptedResourceID); + else { + return LASSO_ERROR_UNIMPLEMENTED; /* implied ? */ + } + + return 0; +} + xmlNode* lasso_profile_service_get_xmlNode(LassoProfileService *service, @@ -333,6 +368,7 @@ lasso_profile_service_process_modify_msg(LassoProfileService *service, return 0; } +#if 0 gint lasso_profile_service_process_query_msg(LassoProfileService *service, const gchar *prefix, /* FIXME : must be get from message */ @@ -363,7 +399,7 @@ lasso_profile_service_process_query_msg(LassoProfileService *service, return 0; } - +#endif gint lasso_profile_service_process_query_response_msg(LassoProfileService *service, @@ -421,6 +457,7 @@ lasso_profile_service_validate_query(LassoProfileService *service, const gchar *prefix, const gchar *href) { +#if 0 LassoDstQuery *request; LassoDstQueryResponse *response; GList *queryItems; @@ -478,25 +515,7 @@ lasso_profile_service_validate_query(LassoProfileService *service, queryItems = queryItems->next; } - return 0; -} - -gint -lasso_profile_service_set_xml_node(LassoProfileService *service, - const char *prefix, - const char *href, - xmlNodePtr xmlNode) -{ - xmlNsPtr ns; - - g_return_val_if_fail(LASSO_IS_PROFILE_SERVICE(service) == TRUE, -1); - g_return_val_if_fail(xmlNode != NULL, -1); - - ns = xmlNewNs(xmlNode, (const xmlChar *) href, (const xmlChar *) prefix); - xmlSetNs(xmlNode, ns); - service->profileDataXmlDoc = xmlNewDoc((const xmlChar *) "1.0"); - xmlDocSetRootElement(service->profileDataXmlDoc, xmlNode); - +#endif return 0; } @@ -544,7 +563,7 @@ finalize(GObject *object) static void instance_init(LassoProfileService *service) { - service->profileDataXmlDoc = NULL; + service->resource_data = NULL; service->private_data = g_new0(LassoProfileServicePrivate, 1); } diff --git a/lasso/id-wsf/profile_service.h b/lasso/id-wsf/profile_service.h index d2b4b829..a1d22e3f 100644 --- a/lasso/id-wsf/profile_service.h +++ b/lasso/id-wsf/profile_service.h @@ -58,7 +58,9 @@ typedef struct _LassoProfileServicePrivate LassoProfileServicePrivate; struct _LassoProfileService { LassoWsfProfile parent; - xmlDoc *profileDataXmlDoc; + LassoDiscoResourceID *resource_id; + LassoDiscoEncryptedResourceID *encrypted_resource_id; + xmlNode *resource_data; /*< private >*/ LassoProfileServicePrivate *private_data; @@ -111,9 +113,7 @@ LASSO_EXPORT gint lasso_profile_service_process_modify_response_msg(LassoProfile const gchar *soap_msg); LASSO_EXPORT gint lasso_profile_service_process_query_msg(LassoProfileService *service, - const gchar *prefix, - const gchar *href, - const gchar *soap_msg); + const char *message); LASSO_EXPORT gint lasso_profile_service_process_query_response_msg(LassoProfileService *service, const gchar *prefix, @@ -128,11 +128,6 @@ LASSO_EXPORT gint lasso_profile_service_validate_query(LassoProfileService *serv const gchar *prefix, const gchar *href); -LASSO_EXPORT gint lasso_profile_service_set_xml_node(LassoProfileService *service, - const gchar *prefix, - const gchar *href, - xmlNodePtr xmlNode); - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/swig/Lasso-wsf.i b/swig/Lasso-wsf.i index 107479e3..3afb5bac 100644 --- a/swig/Lasso-wsf.i +++ b/swig/Lasso-wsf.i @@ -3625,7 +3625,7 @@ typedef struct { #define LassoDiscovery_set_encryptedResourceId(self, value) set_node((gpointer *) &(self)->encrypted_resource_id, (value)) #define LassoDiscovery_encryptedResourceId_set(self, value) set_node((gpointer *) &(self)->encrypted_resource_id, (value)) -/* EncryptedResourceID */ +/* ResourceID */ #define LassoDiscovery_get_resourceId(self) get_node((self)->resource_id) #define LassoDiscovery_resourceId_get(self) get_node((self)->resource_id) #define LassoDiscovery_set_resourceId(self, value) set_node((gpointer *) &(self)->resource_id, (value)) @@ -3933,10 +3933,6 @@ typedef struct { END_THROW_ERROR THROW_ERROR - int setXmlNode(LassoXmlNode *xmlNode); - END_THROW_ERROR - - THROW_ERROR int validateModify(); END_THROW_ERROR @@ -3999,7 +3995,6 @@ LassoXmlNode* LassoPersonalProfileService_getXmlNode(LassoPersonalProfileService #define LassoPersonalProfileService_processModifyResponseMsg lasso_personal_profile_service_process_modify_response_msg #define LassoPersonalProfileService_processQueryMsg lasso_personal_profile_service_process_query_msg #define LassoPersonalProfileService_processQueryResponseMsg lasso_personal_profile_service_process_query_response_msg -#define LassoPersonalProfileService_setXmlNode lasso_personal_profile_service_set_xml_node #define LassoPersonalProfileService_validateModify lasso_personal_profile_service_validate_modify #define LassoPersonalProfileService_validateQuery lasso_personal_profile_service_validate_query @@ -4034,6 +4029,16 @@ typedef struct { %newobject server_get; LassoServer *server; + /* Attributes */ + %newobject resourceId_get; + LassoDiscoResourceID *resourceId; + + %newobject encryptedResourceId_get; + LassoDiscoEncryptedResourceID *encryptedResourceId; + + %newobject resourceData_get; + char *resourceData; + /* Constructor, Destructor & Static Methods */ LassoProfileService(LassoServer *server); @@ -4084,7 +4089,7 @@ typedef struct { END_THROW_ERROR THROW_ERROR - int processQueryMsg(char *prefix, char *href, char *soap_msg); + int processQueryMsg(const char *message); END_THROW_ERROR THROW_ERROR @@ -4092,10 +4097,6 @@ typedef struct { END_THROW_ERROR THROW_ERROR - int setXmlNode(char *prefix, char *href, LassoXmlNode *xmlNode); - END_THROW_ERROR - - THROW_ERROR int validateModify(char *prefix, char *href); END_THROW_ERROR @@ -4135,6 +4136,27 @@ typedef struct { #define LassoProfileService_set_server(self, value) set_node((gpointer *) &LASSO_WSF_PROFILE(self)->server, (value)) #define LassoProfileService_server_set(self, value) set_node((gpointer *) &LASSO_WSF_PROFILE(self)->server, (value)) +/* Attributes */ + +/* EncryptedResourceID */ +#define LassoProfileService_get_encryptedResourceId(self) get_node((self)->encrypted_resource_id) +#define LassoProfileService_encryptedResourceId_get(self) get_node((self)->encrypted_resource_id) +#define LassoProfileService_set_encryptedResourceId(self, value) set_node((gpointer *) &(self)->encrypted_resource_id, (value)) +#define LassoProfileService_encryptedResourceId_set(self, value) set_node((gpointer *) &(self)->encrypted_resource_id, (value)) + +/* ResourceID */ +#define LassoProfileService_get_resourceId(self) get_node((self)->resource_id) +#define LassoProfileService_resourceId_get(self) get_node((self)->resource_id) +#define LassoProfileService_set_resourceId(self, value) set_node((gpointer *) &(self)->resource_id, (value)) +#define LassoProfileService_resourceId_set(self, value) set_node((gpointer *) &(self)->resource_id, (value)) + +/* resourceData */ +#define LassoProfileService_get_resourceData(self) get_xml_string((self)->resource_data) +#define LassoProfileService_resourceData_get(self) get_xml_string((self)->resource_data) +#define LassoProfileService_set_resourceData(self, value) set_xml_string(&(self)->resource_data, (value)) +#define LassoProfileService_resourceData_set(self, value) set_xml_string(&(self)->resource_data, (value)) + + /* Constructors, destructors & static methods implementations */ #define new_LassoProfileService lasso_profile_service_new @@ -4160,7 +4182,6 @@ typedef struct { #define LassoProfileService_processModifyResponseMsg lasso_profile_service_process_modify_response_msg #define LassoProfileService_processQueryMsg lasso_profile_service_process_query_msg #define LassoProfileService_processQueryResponseMsg lasso_profile_service_process_query_response_msg -#define LassoProfileService_setXmlNode lasso_profile_service_set_xml_node #define LassoProfileService_validateModify lasso_profile_service_validate_modify #define LassoProfileService_validateQuery lasso_profile_service_validate_query diff --git a/swig/Lasso.i b/swig/Lasso.i index 4ad337bc..86ec57b1 100644 --- a/swig/Lasso.i +++ b/swig/Lasso.i @@ -1323,6 +1323,27 @@ static void set_xml_list(GList **xmlListPointer, GPtrArray *xmlArray) { } } +static void set_xml_string(xmlNode **xmlnode, const char* string) +{ + xmlDoc *doc; + xmlNode *node; + + fprintf(stderr, "setting string: %s\n", string); + + doc = xmlReadDoc(string, NULL, NULL, XML_PARSE_NONET); + node = xmlDocGetRootElement(doc); + if (node != NULL) + node = xmlCopyNode(node, 1); + xmlFreeDoc(doc); + + if (*xmlnode) + xmlFreeNode(*xmlnode); + + *xmlnode = node; +} + + + %} |
