diff libpurple/protocols/msn/contact.c @ 23447:72aa2ccad28d

fix sending offline message in p15 by sending the correct token. In msnp14, we send the main login token (I realize I may be making up some of the terms here), in p15, we send the one for messengersecure.live.com some refactoring also
author Ka-Hing Cheung <khc@hxbc.us>
date Wed, 26 Dec 2007 01:22:00 +0000
parents f1f5efd679a4
children bca58b00afab
line wrap: on
line diff
--- a/libpurple/protocols/msn/contact.c	Wed Dec 26 00:35:26 2007 +0000
+++ b/libpurple/protocols/msn/contact.c	Wed Dec 26 01:22:00 2007 +0000
@@ -207,26 +207,6 @@
 	return MSN_USER_TYPE_UNKNOWN;
 }
 
-/* Get a ticket token that's correctly formatted */
-static const char *
-msn_contact_get_token(MsnContact *contact)
-{
-	GHashTable *token;
-	char *msn_t;
-	char *msn_p;
-	static char token_str[BUF_LEN];
-
-	token = msn_nexus_get_token(contact->session->nexus, MSN_AUTH_CONTACTS);
-	msn_t = g_hash_table_lookup(token, "t");
-	msn_p = g_hash_table_lookup(token, "p");
-
-	g_sprintf(token_str, "t=%s&amp;p=%s", msn_t, msn_p);
-
-	g_hash_table_unref(token);
-
-	return token_str;
-}
-
 /* Create the AddressBook in the server, if we don't have one */
 static void
 msn_create_address_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data)
@@ -252,8 +232,8 @@
 	purple_debug_info("msnab","Creating an Address Book.\n");
 
 	body = g_strdup_printf(MSN_ADD_ADDRESSBOOK_TEMPLATE,
-	                       msn_contact_get_token(contact),
-	                       contact->session->user->passport);
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		contact->session->user->passport);
 
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_ADD_ADDRESSBOOK_SOAP_ACTION,
@@ -440,8 +420,8 @@
 	}
 
 	body = g_strdup_printf(MSN_GET_CONTACT_TEMPLATE, partner_scenario_str,
-	                       msn_contact_get_token(contact),
-	                       update_str ? update_str : "");
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		update_str ? update_str : "");
 
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_GET_CONTACT_SOAP_ACTION,
@@ -755,9 +735,9 @@
 		update_str = g_strdup_printf(MSN_GET_ADDRESS_UPDATE_XML, LastChanged);
 
 	body = g_strdup_printf(MSN_GET_ADDRESS_TEMPLATE,
-	                       MsnSoapPartnerScenarioText[partner_scenario],
-	                       msn_contact_get_token(contact),
-	                       update_str ? update_str : "");
+		MsnSoapPartnerScenarioText[partner_scenario],
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		update_str ? update_str : "");
 
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_GET_ADDRESS_SOAP_ACTION,
@@ -823,8 +803,8 @@
 
 	contact_xml = g_strdup_printf(MSN_CONTACT_XML, passport);
 	body = g_strdup_printf(MSN_ADD_CONTACT_TEMPLATE,
-	                       msn_contact_get_token(contact),
-	                       contact_xml);
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		contact_xml);
 
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_CONTACT_ADD_SOAP_ACTION,
@@ -933,9 +913,8 @@
 	}
 
 	body = g_strdup_printf(MSN_ADD_CONTACT_GROUP_TEMPLATE,
-	                       msn_contact_get_token(contact),
-	                       groupId,
-	                       contact_xml);
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		groupId, contact_xml);
 
 	msn_soap_message_send(state->session,
 		msn_soap_message_new(MSN_ADD_CONTACT_GROUP_SOAP_ACTION,
@@ -984,8 +963,9 @@
 	/* build SOAP request */
 	purple_debug_info("MSNCL","Deleting contact with contactId: %s\n", contactId);
 	body = g_strdup_printf(MSN_DEL_CONTACT_TEMPLATE,
-	                       msn_contact_get_token(contact),
-	                       contact_id_xml);
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		contact_id_xml);
+
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_CONTACT_DEL_SOAP_ACTION,
 			xmlnode_from_str(body, -1)),
@@ -1058,9 +1038,8 @@
 
 	contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid);
 	body = g_strdup_printf(MSN_CONTACT_DEL_GROUP_TEMPLATE,
-	                       msn_contact_get_token(contact),
-	                       contact_id_xml,
-	                       groupId);
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		contact_id_xml, groupId);
 
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_CONTACT_DEL_GROUP_SOAP_ACTION,
@@ -1094,8 +1073,8 @@
 	escaped_nickname = g_markup_escape_text(nickname, -1);
 
 	body = g_strdup_printf(MSN_CONTACT_UPDATE_TEMPLATE,
-	                       msn_contact_get_token(contact),
-	                       escaped_nickname);
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		escaped_nickname);
 
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_CONTACT_UPDATE_SOAP_ACTION,
@@ -1173,10 +1152,9 @@
 	}
 
 	body = g_strdup_printf( MSN_CONTACT_DELECT_FROM_LIST_TEMPLATE,
-			        MsnSoapPartnerScenarioText[partner_scenario],
-			        msn_contact_get_token(contact),
-			        MsnMemberRole[list],
-			        member);
+		MsnSoapPartnerScenarioText[partner_scenario],
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		MsnMemberRole[list], member);
 
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_DELETE_MEMBER_FROM_LIST_SOAP_ACTION,
@@ -1246,10 +1224,9 @@
 	member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, state->who);
 
 	body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE, 
-			       MsnSoapPartnerScenarioText[partner_scenario],
-			       msn_contact_get_token(contact),
-			       MsnMemberRole[list], 
-			       member);
+		MsnSoapPartnerScenarioText[partner_scenario],
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS),
+		MsnMemberRole[list], member);
 
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_ADD_MEMBER_TO_LIST_SOAP_ACTION,
@@ -1281,7 +1258,8 @@
 	purple_debug_info("MSNP14","msn get gleams info...\n");
 	
 	body = g_strdup_printf(MSN_GLEAMS_TEMPLATE,
-	                       msn_contact_get_token(contact))
+		msn_nexus_get_token_str(contact->session->nexus, MSN_AUTH_CONTACTS));
+
 	msn_soap_message_send(contact->session,
 		msn_soap_message_new(MSN_GET_GLEAMS_SOAP_ACTION,
 			xmlnode_from_str(body, -1)),
@@ -1389,9 +1367,8 @@
 	*/
 	escaped_group_name = g_markup_escape_text(group_name, -1);
 	body = g_strdup_printf(MSN_GROUP_ADD_TEMPLATE,
-	                       msn_contact_get_token(session->contact),
-	                       escaped_group_name);
-	g_free(escaped_group_name);
+		msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS),
+		escaped_group_name);
 
 	msn_soap_message_send(session,
 		msn_soap_message_new(MSN_GROUP_ADD_SOAP_ACTION,
@@ -1399,6 +1376,7 @@
 		MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL,
 		msn_group_read_cb, state);
 
+	g_free(escaped_group_name);
 	g_free(body);
 }
 
@@ -1435,8 +1413,8 @@
 	msn_callback_state_set_guid(state, guid);
 	
 	body = g_strdup_printf(MSN_GROUP_DEL_TEMPLATE,
-	                       msn_contact_get_token(session->contact),
-	                       guid);
+		msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS),
+		guid);
 
 	msn_soap_message_send(session,
 		msn_soap_message_new(MSN_GROUP_DEL_SOAP_ACTION,
@@ -1480,9 +1458,8 @@
 	
 	escaped_group_name = g_markup_escape_text(new_group_name, -1);
 	body = g_strdup_printf(MSN_GROUP_RENAME_TEMPLATE,
-	                       msn_contact_get_token(session->contact),
-	                       guid, escaped_group_name);
-	g_free(escaped_group_name);
+		msn_nexus_get_token_str(session->nexus, MSN_AUTH_CONTACTS),
+		guid, escaped_group_name);
 	
 	msn_soap_message_send(session,
 		msn_soap_message_new(MSN_GROUP_RENAME_SOAP_ACTION,
@@ -1490,5 +1467,6 @@
 		MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL,
 		msn_group_read_cb, state);
 
+	g_free(escaped_group_name);
 	g_free(body);
 }