# HG changeset patch # User Ka-Hing Cheung # Date 1205106927 0 # Node ID 69af5301e1a7896387964c7bc437019e6e62fa51 # Parent 44159acb7bb7c06d47f8b55416d53c80545a153a killing MsnContact which just wraps MsnSession diff -r 44159acb7bb7 -r 69af5301e1a7 libpurple/protocols/msn/contact.c --- a/libpurple/protocols/msn/contact.c Thu Mar 06 04:19:53 2008 +0000 +++ b/libpurple/protocols/msn/contact.c Sun Mar 09 23:55:27 2008 +0000 @@ -50,29 +50,10 @@ }; typedef struct { - MsnContact *contact; + MsnSession *session; MsnSoapPartnerScenario which; } GetContactListCbData; -/* new a contact */ -MsnContact * -msn_contact_new(MsnSession *session) -{ - MsnContact *contact; - - contact = g_new0(MsnContact, 1); - contact->session = session; - - return contact; -} - -/* destroy the contact */ -void -msn_contact_destroy(MsnContact *contact) -{ - g_free(contact); -} - MsnCallbackState * msn_callback_state_new(MsnSession *session) { @@ -213,33 +194,32 @@ { if (resp && xmlnode_get_child(resp->xml, "Body/Fault") == NULL) { purple_debug_info("msnab", "Address Book successfully created!\n"); - msn_get_address_book((MsnContact *)data, MSN_PS_INITIAL, NULL, NULL); + msn_get_address_book((MsnSession *)data, MSN_PS_INITIAL, NULL, NULL); } else { purple_debug_info("msnab", "Address Book creation failed!\n"); } } static void -msn_create_address_book(MsnContact * contact) +msn_create_address_book(MsnSession *session) { gchar *body; - g_return_if_fail(contact != NULL); - g_return_if_fail(contact->session != NULL); - g_return_if_fail(contact->session->user != NULL); - g_return_if_fail(contact->session->user->passport != NULL); + g_return_if_fail(session != NULL); + g_return_if_fail(session->user != NULL); + g_return_if_fail(session->user->passport != NULL); purple_debug_info("msnab","Creating an Address Book.\n"); body = g_strdup_printf(MSN_ADD_ADDRESSBOOK_TEMPLATE, - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), - contact->session->user->passport); + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), + session->user->passport); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_ADD_ADDRESSBOOK_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, msn_create_address_cb, - contact); + session); g_free(body); } @@ -323,7 +303,7 @@ /*parse contact list*/ static void -msn_parse_contact_list(MsnContact *contact, xmlnode *node) +msn_parse_contact_list(MsnSession *session, xmlnode *node) { xmlnode *fault, *faultnode; @@ -345,7 +325,7 @@ char *errorcode = xmlnode_get_data(faultnode); if (g_str_equal(errorcode, "ABDoesNotExist")) { - msn_create_address_book(contact); + msn_create_address_book(session); g_free(errorcode); return; } @@ -353,14 +333,14 @@ g_free(errorcode); } - msn_get_contact_list(contact, MSN_PS_INITIAL, NULL); + msn_get_contact_list(session, MSN_PS_INITIAL, NULL); } else { xmlnode *service; for (service = xmlnode_get_child(node, "Body/FindMembershipResponse/" "FindMembershipResult/Services/Service"); service; service = xmlnode_get_next_twin(service)) { - msn_parse_each_service(contact->session, service); + msn_parse_each_service(session, service); } } } @@ -370,8 +350,7 @@ gpointer data) { GetContactListCbData *cb_data = data; - MsnContact *contact = cb_data->contact; - MsnSession *session = contact->session; + MsnSession *session = cb_data->session; g_return_if_fail(session != NULL); @@ -381,7 +360,7 @@ purple_debug_misc("msncl","Got the contact list!\n"); - msn_parse_contact_list(cb_data->contact, resp->xml); + msn_parse_contact_list(session, resp->xml); abLastChange = purple_account_get_string(session->account, "ablastChange", NULL); dynamicItemLastChange = purple_account_get_string(session->account, @@ -392,9 +371,9 @@ /* XXX: this should be enabled when we can correctly do partial syncs with the server. Currently we need to retrieve the whole list to detect sync issues */ - msn_get_address_book(contact, MSN_PS_INITIAL, abLastChange, dynamicItemLastChange); + msn_get_address_book(session, MSN_PS_INITIAL, abLastChange, dynamicItemLastChange); #else - msn_get_address_book(contact, MSN_PS_INITIAL, NULL, NULL); + msn_get_address_book(session, MSN_PS_INITIAL, NULL, NULL); #endif } } @@ -404,12 +383,12 @@ /*SOAP get contact list*/ void -msn_get_contact_list(MsnContact * contact, +msn_get_contact_list(MsnSession *session, const MsnSoapPartnerScenario partner_scenario, const char *update_time) { gchar *body = NULL; gchar *update_str = NULL; - GetContactListCbData cb_data = { contact, partner_scenario }; + GetContactListCbData cb_data = { session, partner_scenario }; const gchar *partner_scenario_str = MsnSoapPartnerScenarioText[partner_scenario]; purple_debug_misc("MSNCL","Getting Contact List.\n"); @@ -420,10 +399,10 @@ } body = g_strdup_printf(MSN_GET_CONTACT_TEMPLATE, partner_scenario_str, - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), update_str ? update_str : ""); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_GET_CONTACT_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_GET_CONTACT_POST_URL, @@ -434,9 +413,8 @@ } static void -msn_parse_addressbook_groups(MsnContact *contact, xmlnode *node) +msn_parse_addressbook_groups(MsnSession *session, xmlnode *node) { - MsnSession *session = contact->session; xmlnode *group; purple_debug_info("MSNAB","msn_parse_addressbook_groups()\n"); @@ -470,9 +448,8 @@ } static void -msn_parse_addressbook_contacts(MsnContact *contact, xmlnode *node) +msn_parse_addressbook_contacts(MsnSession *session, xmlnode *node) { - MsnSession *session = contact->session; xmlnode *contactNode; char *passport = NULL, *Name = NULL, *uid = NULL, *type = NULL; @@ -591,17 +568,14 @@ } static gboolean -msn_parse_addressbook(MsnContact * contact, xmlnode *node) +msn_parse_addressbook(MsnSession *session, xmlnode *node) { - MsnSession * session; xmlnode *result; xmlnode *groups; xmlnode *contacts; xmlnode *abNode; xmlnode *fault; - session = contact->session; - if ((fault = xmlnode_get_child(node, "Body/Fault"))) { xmlnode *faultnode; @@ -636,7 +610,7 @@ /*Process Group List*/ groups = xmlnode_get_child(result,"groups"); if (groups != NULL) { - msn_parse_addressbook_groups(contact, groups); + msn_parse_addressbook_groups(session, groups); } /*add a default No group to set up the no group Membership*/ @@ -661,7 +635,7 @@ purple_debug_info("MSNAB","process contact list...\n"); contacts =xmlnode_get_child(result,"contacts"); if (contacts != NULL) { - msn_parse_addressbook_contacts(contact, contacts); + msn_parse_addressbook_contacts(session, contacts); } abNode =xmlnode_get_child(result,"ab"); @@ -688,19 +662,16 @@ static void msn_get_address_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data) { - MsnContact *contact = data; - MsnSession *session; + MsnSession *session = data; if (resp == NULL) return; - g_return_if_fail(contact != NULL); - session = contact->session; g_return_if_fail(session != NULL); purple_debug_misc("MSNAB", "Got the Address Book!\n"); - if (msn_parse_addressbook(contact, resp->xml)) { + if (msn_parse_addressbook(session, resp->xml)) { if (!session->logged_in) { msn_send_privacy(session->account->gc); msn_notification_dump_contact(session); @@ -711,7 +682,7 @@ send timestamps) */ /* - msn_get_address_book(contact, NULL, NULL); + msn_get_address_book(session, NULL, NULL); */ msn_session_disconnect(session); purple_connection_error_reason(session->account->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("Unable to retrieve MSN Address Book")); @@ -720,7 +691,7 @@ /*get the address book*/ void -msn_get_address_book(MsnContact *contact, +msn_get_address_book(MsnSession *session, MsnSoapPartnerScenario partner_scenario, const char *LastChanged, const char *dynamicItemLastChange) { @@ -736,14 +707,14 @@ body = g_strdup_printf(MSN_GET_ADDRESS_TEMPLATE, MsnSoapPartnerScenarioText[partner_scenario], - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), update_str ? update_str : ""); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_GET_ADDRESS_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, msn_get_address_cb, - contact); + session); g_free(update_str); g_free(body); @@ -782,7 +753,7 @@ /* add a Contact in MSN_INDIVIDUALS_GROUP */ void -msn_add_contact(MsnContact *contact, MsnCallbackState *state, const char *passport) +msn_add_contact(MsnSession *session, MsnCallbackState *state, const char *passport) { gchar *body = NULL; gchar *contact_xml = NULL; @@ -803,10 +774,10 @@ contact_xml = g_strdup_printf(MSN_CONTACT_XML, passport); body = g_strdup_printf(MSN_ADD_CONTACT_TEMPLATE, - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), contact_xml); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_CONTACT_ADD_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, @@ -846,14 +817,14 @@ msn_notification_send_fqy(state->session, state->who); if (msn_userlist_user_is_in_list(user, MSN_LIST_PL)) { - msn_del_contact_from_list(state->session->contact, NULL, state->who, MSN_LIST_PL); + msn_del_contact_from_list(state->session, NULL, state->who, MSN_LIST_PL); msn_callback_state_free(state); return; } } if (state->action & MSN_MOVE_BUDDY) { - msn_del_contact_from_group(state->session->contact, state->who, state->old_group_name); + msn_del_contact_from_group(state->session, state->who, state->old_group_name); } } @@ -861,7 +832,7 @@ } void -msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, +msn_add_contact_to_group(MsnSession *session, MsnCallbackState *state, const char *passport, const char *groupId) { MsnUserList *userlist; @@ -871,24 +842,22 @@ g_return_if_fail(passport != NULL); g_return_if_fail(groupId != NULL); - g_return_if_fail(contact != NULL); - g_return_if_fail(contact->session != NULL); - g_return_if_fail(contact->session->userlist != NULL); + g_return_if_fail(session != NULL); - userlist = contact->session->userlist; + userlist = session->userlist; if (!strcmp(groupId, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(groupId, MSN_NON_IM_GROUP_ID)) { user = msn_userlist_find_add_user(userlist, passport, passport); if (state->action & MSN_ADD_BUDDY) { - msn_add_contact(contact, state, passport); + msn_add_contact(session, state, passport); return; } if (state->action & MSN_MOVE_BUDDY) { msn_user_add_group_id(user, groupId); - msn_del_contact_from_group(contact, passport, state->old_group_name); + msn_del_contact_from_group(session, passport, state->old_group_name); } else { msn_callback_state_free(state); } @@ -913,7 +882,7 @@ } body = g_strdup_printf(MSN_ADD_CONTACT_GROUP_TEMPLATE, - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), groupId, contact_xml); msn_soap_message_send(state->session, @@ -948,7 +917,7 @@ /*delete a Contact*/ void -msn_delete_contact(MsnContact *contact, const char *contactId) +msn_delete_contact(MsnSession *session, const char *contactId) { gchar *body = NULL; gchar *contact_id_xml = NULL ; @@ -957,16 +926,16 @@ g_return_if_fail(contactId != NULL); contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, contactId); - state = msn_callback_state_new(contact->session); + state = msn_callback_state_new(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, - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), contact_id_xml); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_CONTACT_DEL_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, @@ -995,7 +964,7 @@ } void -msn_del_contact_from_group(MsnContact *contact, const char *passport, const char *group_name) +msn_del_contact_from_group(MsnSession *session, const char *passport, const char *group_name) { MsnUserList * userlist; MsnUser *user; @@ -1005,11 +974,9 @@ g_return_if_fail(passport != NULL); g_return_if_fail(group_name != NULL); - g_return_if_fail(contact != NULL); - g_return_if_fail(contact->session != NULL); - g_return_if_fail(contact->session->userlist != NULL); + g_return_if_fail(session != NULL); - userlist = contact->session->userlist; + userlist = session->userlist; groupId = msn_userlist_find_group_id(userlist, group_name); if (groupId != NULL) { @@ -1031,17 +998,17 @@ return; } - state = msn_callback_state_new(contact->session); + state = msn_callback_state_new(session); msn_callback_state_set_who(state, passport); msn_callback_state_set_guid(state, groupId); msn_callback_state_set_old_group_name(state, group_name); contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid); body = g_strdup_printf(MSN_CONTACT_DEL_GROUP_TEMPLATE, - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), contact_id_xml, groupId); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_CONTACT_DEL_GROUP_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, @@ -1064,7 +1031,7 @@ /* Update a contact's nickname */ void -msn_update_contact(MsnContact *contact, const char* nickname) +msn_update_contact(MsnSession *session, const char* nickname) { gchar *body = NULL, *escaped_nickname; @@ -1073,10 +1040,10 @@ escaped_nickname = g_markup_escape_text(nickname, -1); body = g_strdup_printf(MSN_CONTACT_UPDATE_TEMPLATE, - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), escaped_nickname); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_CONTACT_UPDATE_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, @@ -1102,14 +1069,14 @@ if (user != NULL) msn_user_unset_op(user, MSN_LIST_PL_OP); - msn_add_contact_to_list(session->contact, state, state->who, MSN_LIST_RL); + msn_add_contact_to_list(session, state, state->who, MSN_LIST_RL); return; } else if (state->list_id == MSN_LIST_AL) { purple_privacy_permit_remove(session->account, state->who, TRUE); - msn_add_contact_to_list(session->contact, NULL, state->who, MSN_LIST_BL); + msn_add_contact_to_list(session, NULL, state->who, MSN_LIST_BL); } else if (state->list_id == MSN_LIST_BL) { purple_privacy_deny_remove(session->account, state->who, TRUE); - msn_add_contact_to_list(session->contact, NULL, state->who, MSN_LIST_AL); + msn_add_contact_to_list(session, NULL, state->who, MSN_LIST_AL); } } @@ -1117,30 +1084,29 @@ } void -msn_del_contact_from_list(MsnContact *contact, MsnCallbackState *state, +msn_del_contact_from_list(MsnSession *session, MsnCallbackState *state, const gchar *passport, const MsnListId list) { gchar *body = NULL, *member = NULL; MsnSoapPartnerScenario partner_scenario; MsnUser *user; - g_return_if_fail(contact != NULL); + g_return_if_fail(session != NULL); g_return_if_fail(passport != NULL); g_return_if_fail(list < 5); purple_debug_info("MSN CL", "Deleting contact %s from %s list\n", passport, MsnMemberRole[list]); if (state == NULL) { - state = msn_callback_state_new(contact->session); + state = msn_callback_state_new(session); } msn_callback_state_set_list_id(state, list); msn_callback_state_set_who(state, passport); if (list == MSN_LIST_PL) { - g_return_if_fail(contact->session != NULL); - g_return_if_fail(contact->session->userlist != NULL); + g_return_if_fail(session->userlist != NULL); - user = msn_userlist_find_user(contact->session->userlist, passport); + user = msn_userlist_find_user(session->userlist, passport); partner_scenario = MSN_PS_CONTACT_API; member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML, user->membership_id[MSN_LIST_PL]); @@ -1153,10 +1119,10 @@ body = g_strdup_printf( MSN_CONTACT_DELECT_FROM_LIST_TEMPLATE, MsnSoapPartnerScenarioText[partner_scenario], - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), MsnMemberRole[list], member); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_DELETE_MEMBER_FROM_LIST_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_SHARE_POST_URL, @@ -1174,7 +1140,6 @@ g_return_if_fail(state != NULL); g_return_if_fail(state->session != NULL); - g_return_if_fail(state->session->contact != NULL); if (resp != NULL) { purple_debug_info("MSN CL", "Contact %s added successfully to %s list on server!\n", state->who, MsnMemberRole[state->list_id]); @@ -1188,7 +1153,7 @@ if (state->action & MSN_DENIED_BUDDY) { - msn_add_contact_to_list(state->session->contact, NULL, state->who, MSN_LIST_BL); + msn_add_contact_to_list(state->session, NULL, state->who, MSN_LIST_BL); } else if (state->list_id == MSN_LIST_AL) { purple_privacy_permit_add(state->session->account, state->who, TRUE); } else if (state->list_id == MSN_LIST_BL) { @@ -1201,20 +1166,20 @@ } void -msn_add_contact_to_list(MsnContact *contact, MsnCallbackState *state, +msn_add_contact_to_list(MsnSession *session, MsnCallbackState *state, const gchar *passport, const MsnListId list) { gchar *body = NULL, *member = NULL; MsnSoapPartnerScenario partner_scenario; - g_return_if_fail(contact != NULL); + g_return_if_fail(session != NULL); g_return_if_fail(passport != NULL); g_return_if_fail(list < 5); purple_debug_info("MSN CL", "Adding contact %s to %s list\n", passport, MsnMemberRole[list]); if (state == NULL) { - state = msn_callback_state_new(contact->session); + state = msn_callback_state_new(session); } msn_callback_state_set_list_id(state, list); msn_callback_state_set_who(state, passport); @@ -1225,10 +1190,10 @@ body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE, MsnSoapPartnerScenarioText[partner_scenario], - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS), + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS), MsnMemberRole[list], member); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_ADD_MEMBER_TO_LIST_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_SHARE_POST_URL, @@ -1250,7 +1215,7 @@ /*get the gleams info*/ void -msn_get_gleams(MsnContact *contact) +msn_get_gleams(MsnSession *session) { MsnSoapReq *soap_request; gchar *body = NULL; @@ -1258,9 +1223,9 @@ purple_debug_info("MSNP14","msn get gleams info...\n"); body = g_strdup_printf(MSN_GLEAMS_TEMPLATE, - msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS)); + msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS)); - msn_soap_message_send(contact->session, + msn_soap_message_send(session, msn_soap_message_new(MSN_GET_GLEAMS_SOAP_ACTION, xmlnode_from_str(body, -1)), MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, @@ -1283,7 +1248,6 @@ g_return_if_fail(state->session != NULL); g_return_if_fail(state->session->userlist != NULL); - g_return_if_fail(state->session->contact != NULL); if (resp == NULL) { msn_callback_state_free(state); @@ -1319,7 +1283,7 @@ state->who, state->new_group_name); } else if (state->action & MSN_MOVE_BUDDY) { - msn_add_contact_to_group(session->contact, state, state->who, guid); + msn_add_contact_to_group(session, state, state->who, guid); g_free(guid); return; } diff -r 44159acb7bb7 -r 69af5301e1a7 libpurple/protocols/msn/contact.h --- a/libpurple/protocols/msn/contact.h Thu Mar 06 04:19:53 2008 +0000 +++ b/libpurple/protocols/msn/contact.h Sun Mar 09 23:55:27 2008 +0000 @@ -25,6 +25,8 @@ #ifndef _MSN_CONTACT_H_ #define _MSN_CONTACT_H_ +#include "session.h" + #define MSN_CONTACT_SERVER "contacts.msn.com" /* Get Contact List */ @@ -588,15 +590,6 @@ MSN_RENAME_GROUP = 0x40, } MsnCallbackAction; -typedef struct _MsnContact MsnContact; - -struct _MsnContact -{ - MsnSession *session; - - MsnSoapConn *soapconn; -}; - typedef struct _MsnCallbackState MsnCallbackState; struct _MsnCallbackState @@ -623,9 +616,6 @@ /************************************************ * function prototype ************************************************/ -MsnContact * msn_contact_new(MsnSession *session); -void msn_contact_destroy(MsnContact *contact); - MsnCallbackState * msn_callback_state_new(MsnSession *session); void msn_callback_state_free(MsnCallbackState *state); void msn_callback_state_set_who(MsnCallbackState *state, const gchar *who); @@ -639,24 +629,24 @@ void msn_callback_state_set_action(MsnCallbackState *state, MsnCallbackAction action); -void msn_contact_connect(MsnContact *contact); -void msn_get_contact_list(MsnContact * contact, +void msn_contact_connect(MsnSession *session); +void msn_get_contact_list(MsnSession *session, const MsnSoapPartnerScenario partner_scenario, const char *update); -void msn_get_address_book(MsnContact *contact, +void msn_get_address_book(MsnSession *session, const MsnSoapPartnerScenario partner_scenario, const char * update, const char * gupdate); /* contact SOAP operations */ -void msn_update_contact(MsnContact *contact, const char* nickname); +void msn_update_contact(MsnSession *session, const char* nickname); -void msn_add_contact(MsnContact *contact, MsnCallbackState *state, +void msn_add_contact(MsnSession *session, MsnCallbackState *state, const char *passport); -void msn_delete_contact(MsnContact *contact, const char *contactId); +void msn_delete_contact(MsnSession *session, const char *contactId); -void msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, +void msn_add_contact_to_group(MsnSession *session, MsnCallbackState *state, const char *passport, const char *groupId); -void msn_del_contact_from_group(MsnContact *contact, const char *passport, +void msn_del_contact_from_group(MsnSession *session, const char *passport, const char *group_name); /* group operations */ void msn_add_group(MsnSession *session, MsnCallbackState *state, @@ -666,9 +656,9 @@ const char *new_group_name); /* lists operations */ -void msn_add_contact_to_list(MsnContact *contact, MsnCallbackState *state, +void msn_add_contact_to_list(MsnSession *session, MsnCallbackState *state, const gchar *passport, const MsnListId list); -void msn_del_contact_from_list(MsnContact *contact, MsnCallbackState *state, +void msn_del_contact_from_list(MsnSession *session, MsnCallbackState *state, const gchar *passport, const MsnListId list); void msn_contact_connect_init(MsnSoapConn *soapconn); diff -r 44159acb7bb7 -r 69af5301e1a7 libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Thu Mar 06 04:19:53 2008 +0000 +++ b/libpurple/protocols/msn/msn.c Sun Mar 09 23:55:27 2008 +0000 @@ -27,6 +27,7 @@ #include "msn.h" #include "accountopt.h" +#include "contact.h" #include "msg.h" #include "page.h" #include "pluginpref.h" @@ -1232,10 +1233,10 @@ msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL); /* delete contact from Block list and add it to Allow in the callback */ - msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL); + msn_del_contact_from_list(session, NULL, who, MSN_LIST_BL); } else { /* just add the contact to Allow list */ - msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_AL); + msn_add_contact_to_list(session, NULL, who, MSN_LIST_AL); } @@ -1260,10 +1261,10 @@ msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL); /* delete contact from Allow list and add it to Block in the callback */ - msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL); + msn_del_contact_from_list(session, NULL, who, MSN_LIST_AL); } else { /* just add the contact to Block list */ - msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_BL); + msn_add_contact_to_list(session, NULL, who, MSN_LIST_BL); } msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL); @@ -1286,7 +1287,7 @@ msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL); - msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL); + msn_del_contact_from_list(session, NULL, who, MSN_LIST_AL); if (user != NULL && user->list_op & MSN_LIST_RL_OP) msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL); @@ -1309,7 +1310,7 @@ msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL); - msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL); + msn_del_contact_from_list(session, NULL, who, MSN_LIST_BL); if (user != NULL && user->list_op & MSN_LIST_RL_OP) msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_AL); diff -r 44159acb7bb7 -r 69af5301e1a7 libpurple/protocols/msn/notification.c --- a/libpurple/protocols/msn/notification.c Thu Mar 06 04:19:53 2008 +0000 +++ b/libpurple/protocols/msn/notification.c Sun Mar 09 23:55:27 2008 +0000 @@ -23,6 +23,7 @@ */ #include "msn.h" #include "notification.h" +#include "contact.h" #include "state.h" #include "error.h" #include "msnutils.h" @@ -770,7 +771,7 @@ if (list_op & MSN_LIST_RL_OP) { /* someone is adding us */ // got_new_entry(cmdproc->session->account->gc, passport, decoded_friendly_name); - msn_get_contact_list(cmdproc->session->contact, MSN_PS_PENDING_LIST, NULL); + msn_get_contact_list(cmdproc->session, MSN_PS_PENDING_LIST, NULL); } // g_free(decoded_friendly_name); @@ -827,9 +828,8 @@ { purple_debug_info("MSN Notification","FQY payload:\n%s\n", payload); g_return_if_fail(cmdproc->session != NULL); - g_return_if_fail(cmdproc->session->contact != NULL); // msn_notification_post_adl(cmdproc, payload, len); -// msn_get_address_book(cmdproc->session->contact, MSN_AB_SAVE_CONTACT, NULL, NULL); +// msn_get_address_book(cmdproc->session, MSN_AB_SAVE_CONTACT, NULL, NULL); } static void @@ -1223,7 +1223,7 @@ if (!strcmp(type, "MFN")) { friendlyname = purple_url_decode(cmd->params[2]); - msn_update_contact(session->contact, friendlyname); + msn_update_contact(session, friendlyname); purple_connection_set_display_name( purple_account_get_connection(session->account), @@ -1702,17 +1702,16 @@ /*starting retrieve the contact list*/ clLastChange = purple_account_get_string(session->account, "CLLastChange", NULL); - session->contact = msn_contact_new(session); #ifdef MSN_PARTIAL_LISTS /* msn_userlist_load defeats all attempts at trying to detect blist sync issues */ msn_userlist_load(session); - msn_get_contact_list(session->contact, MSN_PS_INITIAL, clLastChange); + msn_get_contact_list(session, MSN_PS_INITIAL, clLastChange); #else /* always get the full list? */ - msn_get_contact_list(session->contact, MSN_PS_INITIAL, NULL); + msn_get_contact_list(session, MSN_PS_INITIAL, NULL); #endif #if 0 - msn_contact_connect(session->contact); + msn_contact_connect(session); #endif } diff -r 44159acb7bb7 -r 69af5301e1a7 libpurple/protocols/msn/session.c --- a/libpurple/protocols/msn/session.c Thu Mar 06 04:19:53 2008 +0000 +++ b/libpurple/protocols/msn/session.c Sun Mar 09 23:55:27 2008 +0000 @@ -91,8 +91,6 @@ if (session->nexus != NULL) msn_nexus_destroy(session->nexus); - if (session->contact != NULL) - msn_contact_destroy(session->contact); if (session->oim != NULL) msn_oim_destroy(session->oim); diff -r 44159acb7bb7 -r 69af5301e1a7 libpurple/protocols/msn/session.h --- a/libpurple/protocols/msn/session.h Thu Mar 06 04:19:53 2008 +0000 +++ b/libpurple/protocols/msn/session.h Sun Mar 09 23:55:27 2008 +0000 @@ -38,7 +38,6 @@ #include "cmdproc.h" #include "nexus.h" #include "httpconn.h" -#include "contact.h" #include "oim.h" #include "userlist.h" @@ -96,7 +95,6 @@ MsnNotification *notification; MsnNexus *nexus; - MsnContact *contact; MsnOim *oim; MsnSync *sync; diff -r 44159acb7bb7 -r 69af5301e1a7 libpurple/protocols/msn/userlist.c --- a/libpurple/protocols/msn/userlist.c Thu Mar 06 04:19:53 2008 +0000 +++ b/libpurple/protocols/msn/userlist.c Sun Mar 09 23:55:27 2008 +0000 @@ -24,6 +24,8 @@ #include "msn.h" #include "userlist.h" +#include "contact.h" + const char *lists[] = { "FL", "AL", "BL", "RL" }; typedef struct @@ -51,7 +53,7 @@ msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_AL); - msn_del_contact_from_list(session->contact, NULL, pa->who, MSN_LIST_PL); + msn_del_contact_from_list(session, NULL, pa->who, MSN_LIST_PL); } g_free(pa->who); @@ -75,7 +77,7 @@ msn_callback_state_set_action(state, MSN_DENIED_BUDDY); msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_BL); - msn_del_contact_from_list(session->contact, state, pa->who, MSN_LIST_PL); + msn_del_contact_from_list(session, state, pa->who, MSN_LIST_PL); } g_free(pa->who); @@ -627,7 +629,6 @@ g_return_if_fail(userlist != NULL); g_return_if_fail(userlist->session != NULL); - g_return_if_fail(userlist->session->contact != NULL); g_return_if_fail(who != NULL); user = msn_userlist_find_user(userlist, who); @@ -636,7 +637,7 @@ /* delete the contact from address book via soap action */ if (user != NULL) { - msn_delete_contact(userlist->session->contact, user->uid); + msn_delete_contact(userlist->session, user->uid); } } @@ -738,7 +739,7 @@ /* Add contact in the Contact server with a SOAP request and if successful, send ADL with MSN_LIST_AL and MSN_LIST_FL and a FQY */ - msn_add_contact_to_group(userlist->session->contact, state, who, group_id); + msn_add_contact_to_group(userlist->session, state, who, group_id); } void @@ -839,7 +840,6 @@ g_return_if_fail(userlist != NULL); g_return_if_fail(userlist->session != NULL); - g_return_if_fail(userlist->session->contact != NULL); state = msn_callback_state_new(userlist->session); msn_callback_state_set_who(state, who); @@ -858,7 +858,7 @@ /* add the contact to the new group, and remove it from the old one in * the callback */ - msn_add_contact_to_group(userlist->session->contact, state, who, new_group_id); + msn_add_contact_to_group(userlist->session, state, who, new_group_id); } /*load userlist from the Blist file cache*/