summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2005-08-12 11:41:58 +0000
committerFrederic Peters <fpeters@entrouvert.com>2005-08-12 11:41:58 +0000
commit3d77fb20f40b5322433052f7e3dee653c4e9b18a (patch)
tree54c655d9c746e83d73bf8df391b70b2d6b5299b6
parent3e13d02bd59ac18358588bec074741d6b1d846e0 (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.c16
-rw-r--r--lasso/id-wsf/personal_profile_service.c8
-rw-r--r--lasso/id-wsf/personal_profile_service.h3
-rw-r--r--lasso/id-wsf/profile_service.c61
-rw-r--r--lasso/id-wsf/profile_service.h13
-rw-r--r--swig/Lasso-wsf.i45
-rw-r--r--swig/Lasso.i21
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;
+}
+
+
+
%}