diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2005-08-05 15:30:01 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2005-08-05 15:30:01 +0000 |
| commit | e2aadc403979fcf5b36515bce79404ba591b78f5 (patch) | |
| tree | 189d2efa81bf3d1d7a90dc3d996315bf9a702544 | |
| parent | c4ae967731642fd56bac15c59d00c8389ea10d10 (diff) | |
Added getEmail() method in LassoPersonalProfile class.
| -rw-r--r-- | lasso/id-wsf/personal_profile_service.c | 66 | ||||
| -rw-r--r-- | lasso/id-wsf/personal_profile_service.h | 2 |
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); |
