Mercurial > pidgin.yaz
comparison libpurple/protocols/msn/contact.c @ 23300:5cdd93dac7a2
Delete trailing whitespace
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Fri, 06 Jun 2008 22:46:04 +0000 |
parents | f62a4a7fe365 |
children | 1ac5faa72c8d |
comparison
equal
deleted
inserted
replaced
23299:b2f91d7d3427 | 23300:5cdd93dac7a2 |
---|---|
1 /** | 1 /** |
2 * @file contact.c | 2 * @file contact.c |
3 * get MSN contacts via SOAP request | 3 * get MSN contacts via SOAP request |
4 * created by MaYuan<mayuan2006@gmail.com> | 4 * created by MaYuan<mayuan2006@gmail.com> |
5 * | 5 * |
6 * purple | 6 * purple |
7 * | 7 * |
78 MsnCallbackState *state = g_new0(MsnCallbackState, 1); | 78 MsnCallbackState *state = g_new0(MsnCallbackState, 1); |
79 | 79 |
80 state->session = session; | 80 state->session = session; |
81 | 81 |
82 return state; | 82 return state; |
83 } | 83 } |
84 | 84 |
85 void | 85 void |
86 msn_callback_state_free(MsnCallbackState *state) | 86 msn_callback_state_free(MsnCallbackState *state) |
87 { | 87 { |
88 if (state == NULL) | 88 if (state == NULL) |
215 | 215 |
216 g_return_if_fail(contact != NULL); | 216 g_return_if_fail(contact != NULL); |
217 g_return_if_fail(contact->session != NULL); | 217 g_return_if_fail(contact->session != NULL); |
218 g_return_if_fail(contact->session->user != NULL); | 218 g_return_if_fail(contact->session->user != NULL); |
219 g_return_if_fail(contact->session->user->passport != NULL); | 219 g_return_if_fail(contact->session->user->passport != NULL); |
220 | 220 |
221 purple_debug_info("msnab","Creating an Address Book.\n"); | 221 purple_debug_info("msnab","Creating an Address Book.\n"); |
222 | 222 |
223 body = g_strdup_printf(MSN_ADD_ADDRESSBOOK_TEMPLATE, contact->session->user->passport); | 223 body = g_strdup_printf(MSN_ADD_ADDRESSBOOK_TEMPLATE, contact->session->user->passport); |
224 | 224 |
225 msn_soap_message_send(contact->session, | 225 msn_soap_message_send(contact->session, |
245 | 245 |
246 if (member_id) { | 246 if (member_id) { |
247 user->membership_id[list] = atoi(member_id); | 247 user->membership_id[list] = atoi(member_id); |
248 } | 248 } |
249 | 249 |
250 msn_got_lst_user(session, user, 1 << list, NULL); | 250 msn_got_lst_user(session, user, 1 << list, NULL); |
251 | 251 |
252 g_free(passport); | 252 g_free(passport); |
253 g_free(type); | 253 g_free(type); |
254 g_free(member_id); | 254 g_free(member_id); |
255 } | 255 } |
267 } else if (g_str_equal(type_str, "Messenger")) { | 267 } else if (g_str_equal(type_str, "Messenger")) { |
268 xmlnode *lastchange = xmlnode_get_child(service, "LastChange"); | 268 xmlnode *lastchange = xmlnode_get_child(service, "LastChange"); |
269 char *lastchange_str = xmlnode_get_data(lastchange); | 269 char *lastchange_str = xmlnode_get_data(lastchange); |
270 xmlnode *membership; | 270 xmlnode *membership; |
271 | 271 |
272 purple_debug_info("msncl","last change: %s\n", lastchange_str); | 272 purple_debug_info("msncl","last change: %s\n", lastchange_str); |
273 purple_account_set_string(session->account, "CLLastChange", | 273 purple_account_set_string(session->account, "CLLastChange", |
274 lastchange_str); | 274 lastchange_str); |
275 | 275 |
276 for (membership = msn_soap_xml_get(service, | 276 for (membership = msn_soap_xml_get(service, |
277 "Memberships/Membership"); | 277 "Memberships/Membership"); |
478 | 478 |
479 phone_type = xmlnode_get_data(contact_phone_type); | 479 phone_type = xmlnode_get_data(contact_phone_type); |
480 | 480 |
481 if (phone_type && !strcmp(phone_type, "ContactPhoneMobile")) { | 481 if (phone_type && !strcmp(phone_type, "ContactPhoneMobile")) { |
482 xmlnode *number; | 482 xmlnode *number; |
483 | 483 |
484 if ((number = xmlnode_get_child(contact_phone, "number"))) { | 484 if ((number = xmlnode_get_child(contact_phone, "number"))) { |
485 xmlnode *messenger_enabled; | 485 xmlnode *messenger_enabled; |
486 char *is_messenger_enabled = NULL; | 486 char *is_messenger_enabled = NULL; |
487 | 487 |
488 g_free(mobile_number); | 488 g_free(mobile_number); |
489 mobile_number = xmlnode_get_data(number); | 489 mobile_number = xmlnode_get_data(number); |
490 | 490 |
491 if (mobile_number && | 491 if (mobile_number && |
492 (messenger_enabled = xmlnode_get_child(contact_phone, "isMessengerEnabled")) | 492 (messenger_enabled = xmlnode_get_child(contact_phone, "isMessengerEnabled")) |
493 && (is_messenger_enabled = xmlnode_get_data(messenger_enabled)) | 493 && (is_messenger_enabled = xmlnode_get_data(messenger_enabled)) |
494 && !strcmp(is_messenger_enabled, "true")) | 494 && !strcmp(is_messenger_enabled, "true")) |
495 mobile = TRUE; | 495 mobile = TRUE; |
496 | 496 |
497 g_free(is_messenger_enabled); | 497 g_free(is_messenger_enabled); |
498 } | 498 } |
677 | 677 |
678 if ((faultnode = msn_soap_xml_get(fault, "detail/errorcode"))) { | 678 if ((faultnode = msn_soap_xml_get(fault, "detail/errorcode"))) { |
679 gchar *errorcode = xmlnode_get_data(faultnode); | 679 gchar *errorcode = xmlnode_get_data(faultnode); |
680 | 680 |
681 purple_debug_info("MSNAB", "Error Code: %s\n", errorcode); | 681 purple_debug_info("MSNAB", "Error Code: %s\n", errorcode); |
682 | 682 |
683 if (g_str_equal(errorcode, "ABDoesNotExist")) { | 683 if (g_str_equal(errorcode, "ABDoesNotExist")) { |
684 g_free(errorcode); | 684 g_free(errorcode); |
685 return TRUE; | 685 return TRUE; |
686 } | 686 } |
687 g_free(errorcode); | 687 g_free(errorcode); |
821 g_return_if_fail(session != NULL); | 821 g_return_if_fail(session != NULL); |
822 | 822 |
823 if (resp != NULL) { | 823 if (resp != NULL) { |
824 MsnUserList *userlist = session->userlist; | 824 MsnUserList *userlist = session->userlist; |
825 MsnUser *user; | 825 MsnUser *user; |
826 | 826 |
827 purple_debug_info("MSNCL","Contact added successfully\n"); | 827 purple_debug_info("MSNCL","Contact added successfully\n"); |
828 | 828 |
829 // the code this block is replacing didn't send ADL for yahoo contacts, | 829 // the code this block is replacing didn't send ADL for yahoo contacts, |
830 // but i haven't confirmed this is WLM's behaviour wrt yahoo contacts | 830 // but i haven't confirmed this is WLM's behaviour wrt yahoo contacts |
831 if ( !msn_user_is_yahoo(session->account, state->who) ) { | 831 if ( !msn_user_is_yahoo(session->account, state->who) ) { |
919 | 919 |
920 msn_callback_state_free(state); | 920 msn_callback_state_free(state); |
921 } | 921 } |
922 | 922 |
923 void | 923 void |
924 msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, | 924 msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, |
925 const char *passport, const char *groupId) | 925 const char *passport, const char *groupId) |
926 { | 926 { |
927 MsnUserList *userlist; | 927 MsnUserList *userlist; |
928 MsnUser *user; | 928 MsnUser *user; |
929 gchar *body = NULL, *contact_xml; | 929 gchar *body = NULL, *contact_xml; |
932 g_return_if_fail(groupId != NULL); | 932 g_return_if_fail(groupId != NULL); |
933 | 933 |
934 g_return_if_fail(contact != NULL); | 934 g_return_if_fail(contact != NULL); |
935 g_return_if_fail(contact->session != NULL); | 935 g_return_if_fail(contact->session != NULL); |
936 g_return_if_fail(contact->session->userlist != NULL); | 936 g_return_if_fail(contact->session->userlist != NULL); |
937 | 937 |
938 userlist = contact->session->userlist; | 938 userlist = contact->session->userlist; |
939 | 939 |
940 if (!strcmp(groupId, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(groupId, MSN_NON_IM_GROUP_ID)) { | 940 if (!strcmp(groupId, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(groupId, MSN_NON_IM_GROUP_ID)) { |
941 | 941 |
942 user = msn_userlist_find_add_user(userlist, passport, passport); | 942 user = msn_userlist_find_add_user(userlist, passport, passport); |
943 | 943 |
944 if (state->action & MSN_ADD_BUDDY) { | 944 if (state->action & MSN_ADD_BUDDY) { |
945 msn_add_contact(contact, state, passport); | 945 msn_add_contact(contact, state, passport); |
946 return; | 946 return; |
954 } | 954 } |
955 | 955 |
956 return; | 956 return; |
957 } | 957 } |
958 | 958 |
959 purple_debug_info("MSNCL", "Adding user %s to group %s\n", passport, | 959 purple_debug_info("MSNCL", "Adding user %s to group %s\n", passport, |
960 msn_userlist_find_group_name(userlist, groupId)); | 960 msn_userlist_find_group_name(userlist, groupId)); |
961 | 961 |
962 user = msn_userlist_find_user(userlist, passport); | 962 user = msn_userlist_find_user(userlist, passport); |
963 if (user == NULL) { | 963 if (user == NULL) { |
964 purple_debug_warning("MSNCL", "Unable to retrieve user %s from the userlist!\n", passport); | 964 purple_debug_warning("MSNCL", "Unable to retrieve user %s from the userlist!\n", passport); |
965 msn_callback_state_free(state); | 965 msn_callback_state_free(state); |
966 return; /* guess this never happened! */ | 966 return; /* guess this never happened! */ |
967 } | 967 } |
968 | 968 |
969 if (user != NULL && user->uid != NULL) { | 969 if (user != NULL && user->uid != NULL) { |
970 contact_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid); | 970 contact_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid); |
1005 } | 1005 } |
1006 | 1006 |
1007 /*delete a Contact*/ | 1007 /*delete a Contact*/ |
1008 void | 1008 void |
1009 msn_delete_contact(MsnContact *contact, const char *contactId) | 1009 msn_delete_contact(MsnContact *contact, const char *contactId) |
1010 { | 1010 { |
1011 gchar *body = NULL; | 1011 gchar *body = NULL; |
1012 gchar *contact_id_xml = NULL ; | 1012 gchar *contact_id_xml = NULL ; |
1013 MsnCallbackState *state; | 1013 MsnCallbackState *state; |
1014 | 1014 |
1015 g_return_if_fail(contactId != NULL); | 1015 g_return_if_fail(contactId != NULL); |
1043 purple_debug_info("MSNCL", "Contact %s deleted successfully from group %s\n", state->who, state->old_group_name); | 1043 purple_debug_info("MSNCL", "Contact %s deleted successfully from group %s\n", state->who, state->old_group_name); |
1044 } else { | 1044 } else { |
1045 purple_debug_info("MSNCL", "Contact %s deleted successfully from group %s in the server, but failed in the local list\n", state->who, state->old_group_name); | 1045 purple_debug_info("MSNCL", "Contact %s deleted successfully from group %s in the server, but failed in the local list\n", state->who, state->old_group_name); |
1046 } | 1046 } |
1047 } | 1047 } |
1048 | 1048 |
1049 msn_callback_state_free(state); | 1049 msn_callback_state_free(state); |
1050 } | 1050 } |
1051 | 1051 |
1052 void | 1052 void |
1053 msn_del_contact_from_group(MsnContact *contact, const char *passport, const char *group_name) | 1053 msn_del_contact_from_group(MsnContact *contact, const char *passport, const char *group_name) |
1055 MsnUserList * userlist; | 1055 MsnUserList * userlist; |
1056 MsnUser *user; | 1056 MsnUser *user; |
1057 MsnCallbackState *state; | 1057 MsnCallbackState *state; |
1058 gchar *body, *contact_id_xml; | 1058 gchar *body, *contact_id_xml; |
1059 const gchar *groupId; | 1059 const gchar *groupId; |
1060 | 1060 |
1061 g_return_if_fail(passport != NULL); | 1061 g_return_if_fail(passport != NULL); |
1062 g_return_if_fail(group_name != NULL); | 1062 g_return_if_fail(group_name != NULL); |
1063 g_return_if_fail(contact != NULL); | 1063 g_return_if_fail(contact != NULL); |
1064 g_return_if_fail(contact->session != NULL); | 1064 g_return_if_fail(contact->session != NULL); |
1065 g_return_if_fail(contact->session->userlist != NULL); | 1065 g_return_if_fail(contact->session->userlist != NULL); |
1066 | 1066 |
1067 userlist = contact->session->userlist; | 1067 userlist = contact->session->userlist; |
1068 | 1068 |
1069 groupId = msn_userlist_find_group_id(userlist, group_name); | 1069 groupId = msn_userlist_find_group_id(userlist, group_name); |
1070 if (groupId != NULL) { | 1070 if (groupId != NULL) { |
1071 purple_debug_info("MSNCL", "Deleting user %s from group %s\n", passport, group_name); | 1071 purple_debug_info("MSNCL", "Deleting user %s from group %s\n", passport, group_name); |
1072 } else { | 1072 } else { |
1073 purple_debug_warning("MSNCL", "Unable to retrieve group id from group %s !\n", group_name); | 1073 purple_debug_warning("MSNCL", "Unable to retrieve group id from group %s !\n", group_name); |
1074 return; | 1074 return; |
1075 } | 1075 } |
1076 | 1076 |
1077 user = msn_userlist_find_user(userlist, passport); | 1077 user = msn_userlist_find_user(userlist, passport); |
1078 | 1078 |
1079 if (user == NULL) { | 1079 if (user == NULL) { |
1080 purple_debug_warning("MSNCL", "Unable to retrieve user from passport %s!\n", passport); | 1080 purple_debug_warning("MSNCL", "Unable to retrieve user from passport %s!\n", passport); |
1081 return; | 1081 return; |
1082 } | 1082 } |
1083 | 1083 |
1097 msn_soap_message_send(contact->session, | 1097 msn_soap_message_send(contact->session, |
1098 msn_soap_message_new(MSN_CONTACT_DEL_GROUP_SOAP_ACTION, | 1098 msn_soap_message_new(MSN_CONTACT_DEL_GROUP_SOAP_ACTION, |
1099 xmlnode_from_str(body, -1)), | 1099 xmlnode_from_str(body, -1)), |
1100 MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, | 1100 MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, |
1101 msn_del_contact_from_group_read_cb, state); | 1101 msn_del_contact_from_group_read_cb, state); |
1102 | 1102 |
1103 g_free(contact_id_xml); | 1103 g_free(contact_id_xml); |
1104 g_free(body); | 1104 g_free(body); |
1105 } | 1105 } |
1106 | 1106 |
1107 | 1107 |
1196 partner_scenario = MSN_PS_CONTACT_API; | 1196 partner_scenario = MSN_PS_CONTACT_API; |
1197 member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML, user->membership_id[MSN_LIST_PL]); | 1197 member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML, user->membership_id[MSN_LIST_PL]); |
1198 } else { | 1198 } else { |
1199 /* list == MSN_LIST_AL || list == MSN_LIST_BL */ | 1199 /* list == MSN_LIST_AL || list == MSN_LIST_BL */ |
1200 partner_scenario = MSN_PS_BLOCK_UNBLOCK; | 1200 partner_scenario = MSN_PS_BLOCK_UNBLOCK; |
1201 | 1201 |
1202 member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, passport); | 1202 member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, passport); |
1203 } | 1203 } |
1204 | 1204 |
1205 body = g_strdup_printf( MSN_CONTACT_DELECT_FROM_LIST_TEMPLATE, | 1205 body = g_strdup_printf( MSN_CONTACT_DELECT_FROM_LIST_TEMPLATE, |
1206 MsnSoapPartnerScenarioText[partner_scenario], | 1206 MsnSoapPartnerScenarioText[partner_scenario], |
1224 MsnCallbackState *state = data; | 1224 MsnCallbackState *state = data; |
1225 | 1225 |
1226 g_return_if_fail(state != NULL); | 1226 g_return_if_fail(state != NULL); |
1227 g_return_if_fail(state->session != NULL); | 1227 g_return_if_fail(state->session != NULL); |
1228 g_return_if_fail(state->session->contact != NULL); | 1228 g_return_if_fail(state->session->contact != NULL); |
1229 | 1229 |
1230 if (resp != NULL) { | 1230 if (resp != NULL) { |
1231 purple_debug_info("MSN CL", "Contact %s added successfully to %s list on server!\n", state->who, MsnMemberRole[state->list_id]); | 1231 purple_debug_info("MSN CL", "Contact %s added successfully to %s list on server!\n", state->who, MsnMemberRole[state->list_id]); |
1232 | 1232 |
1233 if (state->list_id == MSN_LIST_RL) { | 1233 if (state->list_id == MSN_LIST_RL) { |
1234 MsnUser *user = msn_userlist_find_user(state->session->userlist, state->who); | 1234 MsnUser *user = msn_userlist_find_user(state->session->userlist, state->who); |
1235 | 1235 |
1236 if (user != NULL) { | 1236 if (user != NULL) { |
1237 msn_user_set_op(user, MSN_LIST_RL_OP); | 1237 msn_user_set_op(user, MSN_LIST_RL_OP); |
1238 } | 1238 } |
1239 | 1239 |
1240 if (state->action & MSN_DENIED_BUDDY) { | 1240 if (state->action & MSN_DENIED_BUDDY) { |
1272 | 1272 |
1273 partner_scenario = (list == MSN_LIST_RL) ? MSN_PS_CONTACT_API : MSN_PS_BLOCK_UNBLOCK; | 1273 partner_scenario = (list == MSN_LIST_RL) ? MSN_PS_CONTACT_API : MSN_PS_BLOCK_UNBLOCK; |
1274 | 1274 |
1275 member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, state->who); | 1275 member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, state->who); |
1276 | 1276 |
1277 body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE, | 1277 body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE, |
1278 MsnSoapPartnerScenarioText[partner_scenario], | 1278 MsnSoapPartnerScenarioText[partner_scenario], |
1279 MsnMemberRole[list], | 1279 MsnMemberRole[list], |
1280 member); | 1280 member); |
1281 | 1281 |
1282 msn_soap_message_send(contact->session, | 1282 msn_soap_message_send(contact->session, |
1283 msn_soap_message_new(MSN_ADD_MEMBER_TO_LIST_SOAP_ACTION, | 1283 msn_soap_message_new(MSN_ADD_MEMBER_TO_LIST_SOAP_ACTION, |
1284 xmlnode_from_str(body, -1)), | 1284 xmlnode_from_str(body, -1)), |
1321 | 1321 |
1322 static void | 1322 static void |
1323 msn_group_read_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data) | 1323 msn_group_read_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data) |
1324 { | 1324 { |
1325 MsnCallbackState *state = data; | 1325 MsnCallbackState *state = data; |
1326 | 1326 |
1327 purple_debug_info("MSNCL", "Group request successful.\n"); | 1327 purple_debug_info("MSNCL", "Group request successful.\n"); |
1328 | 1328 |
1329 g_return_if_fail(state->session != NULL); | 1329 g_return_if_fail(state->session != NULL); |
1330 g_return_if_fail(state->session->userlist != NULL); | 1330 g_return_if_fail(state->session->userlist != NULL); |
1331 g_return_if_fail(state->session->contact != NULL); | 1331 g_return_if_fail(state->session->contact != NULL); |
1332 | 1332 |
1333 if (resp == NULL) { | 1333 if (resp == NULL) { |
1336 } | 1336 } |
1337 | 1337 |
1338 if (state) { | 1338 if (state) { |
1339 MsnSession *session = state->session; | 1339 MsnSession *session = state->session; |
1340 MsnUserList *userlist = session->userlist; | 1340 MsnUserList *userlist = session->userlist; |
1341 | 1341 |
1342 if (state->action & MSN_RENAME_GROUP) { | 1342 if (state->action & MSN_RENAME_GROUP) { |
1343 msn_userlist_rename_group_id(session->userlist, | 1343 msn_userlist_rename_group_id(session->userlist, |
1344 state->guid, | 1344 state->guid, |
1345 state->new_group_name); | 1345 state->new_group_name); |
1346 } | 1346 } |
1347 | 1347 |
1348 if (state->action & MSN_ADD_GROUP) { | 1348 if (state->action & MSN_ADD_GROUP) { |
1349 /* the response is taken from | 1349 /* the response is taken from |
1350 http://telepathy.freedesktop.org/wiki/Pymsn/MSNP/ContactListActions | 1350 http://telepathy.freedesktop.org/wiki/Pymsn/MSNP/ContactListActions |
1351 should copy it to msnpiki some day */ | 1351 should copy it to msnpiki some day */ |
1352 xmlnode *guid_node = msn_soap_xml_get(resp->xml, | 1352 xmlnode *guid_node = msn_soap_xml_get(resp->xml, |
1362 if (state->action & MSN_ADD_BUDDY) { | 1362 if (state->action & MSN_ADD_BUDDY) { |
1363 msn_userlist_add_buddy(session->userlist, | 1363 msn_userlist_add_buddy(session->userlist, |
1364 state->who, | 1364 state->who, |
1365 state->new_group_name); | 1365 state->new_group_name); |
1366 } else if (state->action & MSN_MOVE_BUDDY) { | 1366 } else if (state->action & MSN_MOVE_BUDDY) { |
1367 msn_add_contact_to_group(session->contact, state, state->who, guid); | 1367 msn_add_contact_to_group(session->contact, state, state->who, guid); |
1368 g_free(guid); | 1368 g_free(guid); |
1369 return; | 1369 return; |
1370 } | 1370 } |
1371 g_free(guid); | 1371 g_free(guid); |
1372 } else { | 1372 } else { |
1373 purple_debug_info("MSNCL", "Adding group %s failed\n", | 1373 purple_debug_info("MSNCL", "Adding group %s failed\n", |
1374 state->new_group_name); | 1374 state->new_group_name); |
1375 } | 1375 } |
1376 } | 1376 } |
1377 | 1377 |
1378 if (state->action & MSN_DEL_GROUP) { | 1378 if (state->action & MSN_DEL_GROUP) { |
1379 GList *l; | 1379 GList *l; |
1380 | 1380 |
1381 msn_userlist_remove_group_id(session->userlist, state->guid); | 1381 msn_userlist_remove_group_id(session->userlist, state->guid); |
1382 for (l = userlist->users; l != NULL; l = l->next) { | 1382 for (l = userlist->users; l != NULL; l = l->next) { |
1383 msn_user_remove_group_id( (MsnUser *)l->data, state->guid); | 1383 msn_user_remove_group_id( (MsnUser *)l->data, state->guid); |
1384 } | 1384 } |
1385 } | 1385 } |
1386 | 1386 |
1387 msn_callback_state_free(state); | 1387 msn_callback_state_free(state); |
1388 } | 1388 } |
1389 } | 1389 } |
1390 | 1390 |
1391 /* add group */ | 1391 /* add group */ |
1394 { | 1394 { |
1395 char *body = NULL; | 1395 char *body = NULL; |
1396 | 1396 |
1397 g_return_if_fail(session != NULL); | 1397 g_return_if_fail(session != NULL); |
1398 g_return_if_fail(group_name != NULL); | 1398 g_return_if_fail(group_name != NULL); |
1399 | 1399 |
1400 purple_debug_info("MSNCL","Adding group %s to contact list.\n", group_name); | 1400 purple_debug_info("MSNCL","Adding group %s to contact list.\n", group_name); |
1401 | 1401 |
1402 if (state == NULL) { | 1402 if (state == NULL) { |
1403 state = msn_callback_state_new(session); | 1403 state = msn_callback_state_new(session); |
1404 } | 1404 } |
1427 MsnCallbackState *state; | 1427 MsnCallbackState *state; |
1428 char *body = NULL; | 1428 char *body = NULL; |
1429 const gchar *guid; | 1429 const gchar *guid; |
1430 | 1430 |
1431 g_return_if_fail(session != NULL); | 1431 g_return_if_fail(session != NULL); |
1432 | 1432 |
1433 g_return_if_fail(group_name != NULL); | 1433 g_return_if_fail(group_name != NULL); |
1434 purple_debug_info("MSNCL","Deleting group %s from contact list\n", group_name); | 1434 purple_debug_info("MSNCL","Deleting group %s from contact list\n", group_name); |
1435 | 1435 |
1436 guid = msn_userlist_find_group_id(session->userlist, group_name); | 1436 guid = msn_userlist_find_group_id(session->userlist, group_name); |
1437 | 1437 |
1438 /* if group uid we need to del is NULL, | 1438 /* if group uid we need to del is NULL, |
1439 * we need to delete nothing | 1439 * we need to delete nothing |
1440 */ | 1440 */ |
1441 if (guid == NULL) { | 1441 if (guid == NULL) { |
1442 purple_debug_info("MSNCL", "Group %s guid not found, returning.\n", group_name); | 1442 purple_debug_info("MSNCL", "Group %s guid not found, returning.\n", group_name); |
1443 return; | 1443 return; |
1449 } | 1449 } |
1450 | 1450 |
1451 state = msn_callback_state_new(session); | 1451 state = msn_callback_state_new(session); |
1452 msn_callback_state_set_action(state, MSN_DEL_GROUP); | 1452 msn_callback_state_set_action(state, MSN_DEL_GROUP); |
1453 msn_callback_state_set_guid(state, guid); | 1453 msn_callback_state_set_guid(state, guid); |
1454 | 1454 |
1455 body = g_strdup_printf(MSN_GROUP_DEL_TEMPLATE, guid); | 1455 body = g_strdup_printf(MSN_GROUP_DEL_TEMPLATE, guid); |
1456 | 1456 |
1457 msn_soap_message_send(session, | 1457 msn_soap_message_send(session, |
1458 msn_soap_message_new(MSN_GROUP_DEL_SOAP_ACTION, | 1458 msn_soap_message_new(MSN_GROUP_DEL_SOAP_ACTION, |
1459 xmlnode_from_str(body, -1)), | 1459 xmlnode_from_str(body, -1)), |
1468 msn_contact_rename_group(MsnSession *session, const char *old_group_name, const char *new_group_name) | 1468 msn_contact_rename_group(MsnSession *session, const char *old_group_name, const char *new_group_name) |
1469 { | 1469 { |
1470 gchar *body = NULL; | 1470 gchar *body = NULL; |
1471 const gchar * guid; | 1471 const gchar * guid; |
1472 MsnCallbackState *state; | 1472 MsnCallbackState *state; |
1473 | 1473 |
1474 g_return_if_fail(session != NULL); | 1474 g_return_if_fail(session != NULL); |
1475 g_return_if_fail(session->userlist != NULL); | 1475 g_return_if_fail(session->userlist != NULL); |
1476 g_return_if_fail(old_group_name != NULL); | 1476 g_return_if_fail(old_group_name != NULL); |
1477 g_return_if_fail(new_group_name != NULL); | 1477 g_return_if_fail(new_group_name != NULL); |
1478 | 1478 |
1479 purple_debug_info("MSN CL", "Renaming group %s to %s.\n", old_group_name, new_group_name); | 1479 purple_debug_info("MSN CL", "Renaming group %s to %s.\n", old_group_name, new_group_name); |
1480 | 1480 |
1481 guid = msn_userlist_find_group_id(session->userlist, old_group_name); | 1481 guid = msn_userlist_find_group_id(session->userlist, old_group_name); |
1482 if (guid == NULL) | 1482 if (guid == NULL) |
1483 return; | 1483 return; |
1484 | 1484 |
1485 state = msn_callback_state_new(session); | 1485 state = msn_callback_state_new(session); |
1490 msn_add_group(session, state, new_group_name); | 1490 msn_add_group(session, state, new_group_name); |
1491 // XXX move every buddy there (we probably need to fix concurrent SOAP reqs first) | 1491 // XXX move every buddy there (we probably need to fix concurrent SOAP reqs first) |
1492 } | 1492 } |
1493 | 1493 |
1494 msn_callback_state_set_action(state, MSN_RENAME_GROUP); | 1494 msn_callback_state_set_action(state, MSN_RENAME_GROUP); |
1495 | 1495 |
1496 body = g_markup_printf_escaped(MSN_GROUP_RENAME_TEMPLATE, | 1496 body = g_markup_printf_escaped(MSN_GROUP_RENAME_TEMPLATE, |
1497 guid, new_group_name); | 1497 guid, new_group_name); |
1498 | 1498 |
1499 msn_soap_message_send(session, | 1499 msn_soap_message_send(session, |
1500 msn_soap_message_new(MSN_GROUP_RENAME_SOAP_ACTION, | 1500 msn_soap_message_new(MSN_GROUP_RENAME_SOAP_ACTION, |
1501 xmlnode_from_str(body, -1)), | 1501 xmlnode_from_str(body, -1)), |
1502 MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, | 1502 MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL, |
1503 msn_group_read_cb, state); | 1503 msn_group_read_cb, state); |