summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2005-08-05 15:30:01 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2005-08-05 15:30:01 +0000
commite2aadc403979fcf5b36515bce79404ba591b78f5 (patch)
tree189d2efa81bf3d1d7a90dc3d996315bf9a702544
parentc4ae967731642fd56bac15c59d00c8389ea10d10 (diff)
Added getEmail() method in LassoPersonalProfile class.
-rw-r--r--lasso/id-wsf/personal_profile_service.c66
-rw-r--r--lasso/id-wsf/personal_profile_service.h2
2 files changed, 68 insertions, 0 deletions
diff --git a/lasso/id-wsf/personal_profile_service.c b/lasso/id-wsf/personal_profile_service.c
index 22a456ce..ea9a2c9b 100644
--- a/lasso/id-wsf/personal_profile_service.c
+++ b/lasso/id-wsf/personal_profile_service.c
@@ -23,6 +23,8 @@
*/
#include <lasso/id-wsf/personal_profile_service.h>
+#include <lasso/xml/dst_query_response.h>
+#include <lasso/xml/dst_data.h>
/*****************************************************************************/
@@ -61,6 +63,70 @@ lasso_personal_profile_service_init_query(LassoPersonalProfileService *service,
select);
}
+gchar*
+lasso_personal_profile_service_get_email(LassoPersonalProfileService *service)
+{
+ LassoDstQueryResponse *response;
+ GList *datas;
+ LassoDstData *data;
+ xmlNode *root, *child;
+ xmlChar *msgAccount, *msgProvider;
+ char *email;
+
+ g_return_val_if_fail(LASSO_IS_PERSONAL_PROFILE_SERVICE(service) == TRUE, NULL);
+
+ response = LASSO_DST_QUERY_RESPONSE(LASSO_WSF_PROFILE(service)->response);
+ datas = response->Data;
+ msgAccount = NULL;
+ msgProvider = NULL;
+ while (datas != NULL) {
+ data = LASSO_DST_DATA(datas->data);
+
+ root = (xmlNode *) data->any->data;
+ if (root == NULL) {
+ printf("\tDEBUG - Root element not found ...\n");
+ datas = datas->next;
+ continue;
+ }
+
+ if (strcmp((char *) root->name, "MsgContact") == 0) {
+ child = root->children;
+ while (child != NULL) {
+ if (child->type != XML_ELEMENT_NODE) {
+ child = child->next;
+ continue;
+ }
+
+ if (strcmp((char *) child->name, "MsgAccount") == 0) {
+ msgAccount = xmlNodeGetContent(child);
+ }
+ else if (strcmp((char *) child->name, "MsgProvider") == 0) {
+ msgProvider = xmlNodeGetContent(child);
+ }
+
+ if (msgAccount != NULL && msgProvider != NULL) {
+ break;
+ }
+
+ child = child->next;
+ }
+ }
+
+ if (msgAccount != NULL && msgProvider != NULL) {
+ break;
+ }
+
+ datas = datas->next;
+ }
+ if (msgAccount != NULL || msgProvider != NULL) {
+ email = g_strdup_printf("%s@%s", msgAccount, msgProvider);
+ }
+ xmlFree(msgAccount);
+ xmlFree(msgProvider);
+
+ return email;
+}
+
gint
lasso_personal_profile_service_process_modify_msg(LassoPersonalProfileService *service,
const gchar *modify_soap_msg)
diff --git a/lasso/id-wsf/personal_profile_service.h b/lasso/id-wsf/personal_profile_service.h
index 2326aefe..81c82d03 100644
--- a/lasso/id-wsf/personal_profile_service.h
+++ b/lasso/id-wsf/personal_profile_service.h
@@ -81,6 +81,8 @@ LASSO_EXPORT LassoDstQueryItem* lasso_personal_profile_service_init_query(
LassoDiscoDescription *desc,
const gchar *select);
+LASSO_EXPORT gchar* lasso_personal_profile_service_get_email(LassoPersonalProfileService *service);
+
LASSO_EXPORT gint lasso_personal_profile_service_process_modify_msg(
LassoPersonalProfileService *service,
const gchar *soap_msg);