Mercurial > pidgin
changeset 21108:cc43e75a1da7
merge of '772308477d928d281291577b4419345699dbadab'
and 'ed4bbce61c745ed89765f52ffe38807c3ee2c9ed'
author | Ka-Hing Cheung <khc@hxbc.us> |
---|---|
date | Thu, 25 Oct 2007 08:33:59 +0000 |
parents | 95684692f622 (diff) ca624eda4267 (current diff) |
children | 13279824fe64 |
files | libpurple/protocols/msn/contact.c |
diffstat | 1 files changed, 31 insertions(+), 101 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/msn/contact.c Wed Oct 24 06:45:26 2007 +0000 +++ b/libpurple/protocols/msn/contact.c Thu Oct 25 08:33:59 2007 +0000 @@ -159,36 +159,6 @@ state->action |= action; } -/*contact SOAP server login error*/ -static void -msn_contact_login_error_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc, PurpleSslErrorType error) -{ - MsnSession *session; - - session = soapconn->session; - g_return_if_fail(session != NULL); - - msn_session_set_error(session, MSN_ERROR_SERV_DOWN, _("Unable to connect to contact server")); -} - -/*msn contact SOAP server connect process*/ -static gboolean -msn_contact_login_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc) -{ - MsnSession * session; - MsnContact *contact; - - contact = soapconn->parent; - g_return_val_if_fail(contact != NULL, TRUE); - - session = contact->session; - g_return_val_if_fail(session != NULL, FALSE); - - /*login ok!We can retrieve the contact list*/ -// msn_get_contact_list(contact, MSN_PS_INITIAL, NULL); - return TRUE; -} - /*get MSN member role utility*/ static MsnListId msn_get_memberrole(const char *role) @@ -227,24 +197,6 @@ } /* Create the AddressBook in the server, if we don't have one */ -static gboolean -msn_create_address_cb(MsnSoapConn *soapconn) -{ - MsnContact *contact; - - if (soapconn->body == NULL) - return TRUE; - - contact = soapconn->parent; - g_return_val_if_fail(contact != NULL, TRUE); - - purple_debug_info("MSN AddressBook", "Address Book successfully created!\n"); - msn_get_address_book(contact, MSN_PS_INITIAL, NULL, NULL); - -// msn_soap_free_read_buf(soapconn); - return TRUE; -} - static void msn_create_address_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data) { @@ -703,17 +655,17 @@ xmlnode *node2; char *tmp = NULL; - LastChangeNode = xmlnode_get_child(abNode,"lastChange"); - lastchange = xmlnode_get_data(LastChangeNode); - purple_debug_info("MSNAB"," lastchanged Time:{%s}\n",lastchange); - purple_account_set_string(session->account, "ablastChange", lastchange); + if ((node2 = xmlnode_get_child(abNode, "lastChange"))) + tmp = xmlnode_get_data(node2); + purple_debug_info("MsnAB"," lastchanged Time:{%s}\n", tmp ? tmp : "(null)"); + purple_account_set_string(session->account, "ablastChange", tmp); - DynamicItemLastChangedNode = xmlnode_get_child(abNode,"DynamicItemLastChanged"); - dynamicChange = xmlnode_get_data(DynamicItemLastChangedNode); - purple_debug_info("MSNAB"," DynamicItemLastChanged :{%s}\n",dynamicChange); - purple_account_set_string(session->account, "DynamicItemLastChanged", lastchange); - g_free(dynamicChange); - g_free(lastchange); + g_free(tmp); tmp = NULL; + if ((node2 = xmlnode_get_child(abNode, "DynamicItemLastChanged"))) + tmp = xmlnode_get_data(node2); + purple_debug_info("MsnAB"," DynamicItemLastChanged :{%s}\n", tmp ? tmp : "(null)"); + purple_account_set_string(session->account, "DynamicItemLastChanged", tmp); + g_free(tmp); } return TRUE; @@ -757,14 +709,6 @@ } } -/**/ -static void -msn_address_written_cb(MsnSoapConn *soapconn) -{ - purple_debug_misc("MSN AddressBook","Sent SOAP request for the Address Book.\n"); - soapconn->read_cb = msn_get_address_cb; -} - /*get the address book*/ void msn_get_address_book(MsnContact *contact, @@ -836,15 +780,6 @@ } msn_callback_state_free(state); - - return TRUE; -} - -static void -msn_add_contact_written_cb(MsnSoapConn *soapconn) -{ - purple_debug_info("MSNCL","Add contact request written\n"); - soapconn->read_cb = msn_add_contact_read_cb; } /* add a Contact in MSN_INDIVIDUALS_GROUP */ @@ -993,10 +928,21 @@ msn_delete_contact_read_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data) { - if (resp == NULL) - return; + MsnCallbackState *state = data; + + if (resp != NULL) { + MsnUser *user; + MsnUserList *userlist = state->session->userlist; + + purple_debug_info("MSNCL","Delete contact successful\n"); - purple_debug_info("MSNCL","Delete contact successful\n"); + user = msn_userlist_find_user_with_id(userlist, state->uid); + if (user != NULL) { + msn_userlist_remove_user(userlist, user); + } + } + + msn_callback_state_free(state); } /*delete a Contact*/ @@ -1005,21 +951,23 @@ { gchar *body = NULL; gchar *contact_id_xml = NULL ; + MsnCallbackState *state; g_return_if_fail(contactId != NULL); contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, contactId); - state = msn_callback_state_new(); + state = msn_callback_state_new(contact->session); msn_callback_state_set_uid(state, contactId); /* build SOAP request */ purple_debug_info("MSNCL","Deleting contact with contactId: %s\n", contactId); body = g_strdup_printf(MSN_DEL_CONTACT_TEMPLATE, contact_id_xml); - msn_soap_message_send(contact->session, + + msn_soap_message_send(state->session, msn_soap_message_new(MSN_CONTACT_DEL_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, - msn_delete_contact_read_cb, NULL); + msn_delete_contact_read_cb, state); g_free(contact_id_xml); g_free(body); @@ -1099,17 +1047,6 @@ } -static gboolean -msn_update_contact_read_cb(MsnSoapConn *soapconn) -{ - if (soapconn->body == NULL) - return TRUE; - - purple_debug_info("MSN CL","Contact updated successfully\n"); - - return TRUE; -} - static void msn_update_contact_read_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data) @@ -1241,9 +1178,9 @@ } if (state->list_id == MSN_LIST_AL) { - purple_privacy_permit_add(soapconn->session->account, state->who, TRUE); + purple_privacy_permit_add(state->session->account, state->who, TRUE); } else if (state->list_id == MSN_LIST_BL) { - purple_privacy_deny_add(soapconn->session->account, state->who, TRUE); + purple_privacy_deny_add(state->session->account, state->who, TRUE); } msn_callback_state_free(state); @@ -1288,13 +1225,6 @@ } #if 0 -static gboolean -msn_gleams_read_cb(MsnSoapConn * soapconn) -{ - purple_debug_info("MSN CL","Gleams read done\n"); - return TRUE; -} - static void msn_gleams_read_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data) {