libpurple/protocols/myspace/myspace.c

Wed, 10 Jul 2013 23:55:21 +0530

author
Ankit Vani <a@nevitus.org>
date
Wed, 10 Jul 2013 23:55:21 +0530
branch
soc.2013.gobjectification
changeset 34746
dc9c911dbd35
parent 34728
8efd73063ecf
child 34760
062535fbe1e9
permissions
-rw-r--r--

Started GObjectification of PurpleConnection.
* Changed prefix of PurpleConnectionFlags values from PURPLE_CONNECTION_ to PURPLE_CONNECTION_FLAG_
* Changed prefix of PurpleConnectionState values from PURPLE_ TO PURPLE_CONNECTION_

25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2 * MySpaceIM Protocol Plugin
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
4 * \author Jeff Connelly
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
5 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
6 * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
7 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
8 * Based on Purple's "C Plugin HOWTO" hello world example.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
9 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
10 * Code also drawn from mockprpl:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
11 * http://snarfed.org/space/purple+mock+protocol+plugin
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
12 * Copyright (C) 2004-2007, Ryan Barrett <mockprpl@ryanb.org>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
13 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
14 * and some constructs also based on existing Purple plugins, which are:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
15 * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
16 * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
17 * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
18 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
19 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
20 * This program is free software; you can redistribute it and/or modify
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
21 * it under the terms of the GNU General Public License as published by
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
22 * the Free Software Foundation; either version 2 of the License, or
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
23 * (at your option) any later version.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
24 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
25 * This program is distributed in the hope that it will be useful,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
28 * GNU General Public License for more details.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
29 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
30 * You should have received a copy of the GNU General Public License
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
31 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19839
diff changeset
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
33 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
34
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
35 #define PURPLE_PLUGIN
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
36
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
37 #include "myspace.h"
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
38
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
39 static void msim_set_status(PurpleAccount *account, PurpleStatus *status);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
40 static void msim_set_idle(PurpleConnection *gc, int time);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
41
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
42 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
43 * Perform actual postprocessing on a message, adding userid as specified.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
44 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
45 * @param msg The message to postprocess.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
46 * @param uid_before Name of field where to insert new field before, or NULL for end.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
47 * @param uid_field_name Name of field to add uid to.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
48 * @param uid The userid to insert.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
49 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
50 * If the field named by uid_field_name already exists, then its string contents will
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
51 * be used for the field, except "<uid>" will be replaced by the userid.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
52 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
53 * If the field named by uid_field_name does not exist, it will be added before the
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
54 * field named by uid_before, as an integer, with the userid.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
55 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
56 * Does not handle sending, or scheduling userid lookup. For that, see msim_postprocess_outgoing().
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
57 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
58 static MsimMessage *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
59 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
60 const gchar *uid_field_name, guint uid)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
61 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
62 MsimMessageElement *elem;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
63
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
64 /* First, check - if the field already exists, replace <uid> within it */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
65 if ((elem = msim_msg_get(msg, uid_field_name)) != NULL) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
66 gchar *fmt_string;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
67 gchar *uid_str, *new_str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
68
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
69 /* Get the packed element, flattening it. This allows <uid> to be
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
70 * replaced within nested data structures, since the replacement is done
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
71 * on the linear, packed data, not on a complicated data structure.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
72 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
73 * For example, if the field was originally a dictionary or a list, you
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
74 * would have to iterate over all the items in it to see what needs to
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
75 * be replaced. But by packing it first, the <uid> marker is easily replaced
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
76 * just by a string replacement.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
77 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
78 fmt_string = msim_msg_pack_element_data(elem);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
79
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
80 uid_str = g_strdup_printf("%d", uid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
81 new_str = purple_strreplace(fmt_string, "<uid>", uid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
82 g_free(uid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
83 g_free(fmt_string);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
84
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
85 /* Free the old element data */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
86 msim_msg_free_element_data(elem->data);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
87
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
88 /* Replace it with our new data */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
89 elem->data = new_str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
90 elem->type = MSIM_TYPE_RAW;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
91
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
92 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
93 /* Otherwise, insert new field into outgoing message. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
94 msg = msim_msg_insert_before(msg, uid_before, uid_field_name, MSIM_TYPE_INTEGER, GUINT_TO_POINTER(uid));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
95 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
96
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
97 return msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
98 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
99
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
100 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
101 * Callback for msim_postprocess_outgoing() to add a userid to a message, and send it (once receiving userid).
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
102 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
103 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
104 * @param userinfo The user information reply message, containing the user ID
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
105 * @param data The message to postprocess and send.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
106 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
107 * The data message should contain these fields:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
108 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
109 * _uid_field_name: string, name of field to add with userid from userinfo message
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
110 * _uid_before: string, name of field before field to insert, or NULL for end
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
111 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
112 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
113 msim_postprocess_outgoing_cb(MsimSession *session, const MsimMessage *userinfo,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
114 gpointer data)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
115 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
116 gchar *uid_field_name, *uid_before, *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
117 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
118 MsimMessage *msg, *body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
119
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
120 msg = (MsimMessage *)data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
121
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
122 /* Obtain userid from userinfo message. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
123 body = msim_msg_get_dictionary(userinfo, "body");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
124 g_return_if_fail(body != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
125
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
126 uid = msim_msg_get_integer(body, "UserID");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
127 msim_msg_free(body);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
128
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
129 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
130
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
131 if (!uid) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
132 gchar *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
133
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
134 msg = g_strdup_printf(_("No such user: %s"), username);
34631
18bd628bb28d Replaced purple_conv_present_error() with purple_conversation_helper_present_error()
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
135 if (!purple_conversation_helper_present_error(username, session->account, msg)) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
136 purple_notify_error(NULL, NULL, _("User lookup"), msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
137 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
138
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
139 g_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
140 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
141 /* TODO: free
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
142 * msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
143 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
144 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
145 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
146
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
147 uid_field_name = msim_msg_get_string(msg, "_uid_field_name");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
148 uid_before = msim_msg_get_string(msg, "_uid_before");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
149
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
150 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
151
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
152 /* Send */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
153 if (!msim_msg_send(session, msg)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
154 msim_msg_dump("msim_postprocess_outgoing_cb: sending failed for message: %s\n", msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
155 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
156
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
157
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
158 /* Free field names AFTER sending message, because MsimMessage does NOT copy
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
159 * field names - instead, treats them as static strings (which they usually are).
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
160 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
161 g_free(uid_field_name);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
162 g_free(uid_before);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
163 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
164 /* TODO: free
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
165 * msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
166 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
167 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
168
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
169 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
170 * Postprocess and send a message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
171 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
172 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
173 * @param msg Message to postprocess. Will NOT be freed.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
174 * @param username Username to resolve. Assumed to be a static string (will not be freed or copied).
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
175 * @param uid_field_name Name of new field to add, containing uid of username. Static string.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
176 * @param uid_before Name of existing field to insert username field before. Static string.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
177 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
178 * @return TRUE if successful.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
179 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
180 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
181 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
182 const gchar *username, const gchar *uid_field_name,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
183 const gchar *uid_before)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
184 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
185 PurpleBuddy *buddy;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
186 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
187 gboolean rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
188
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
189 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
190
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
191 /* Store information for msim_postprocess_outgoing_cb(). */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
192 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
193 msg = msim_msg_append(msg, "_uid_field_name", MSIM_TYPE_STRING, g_strdup(uid_field_name));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
194 msg = msim_msg_append(msg, "_uid_before", MSIM_TYPE_STRING, g_strdup(uid_before));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
195
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
196 /* First, try the most obvious. If numeric userid is given, use that directly. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
197 if (msim_is_userid(username)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
198 uid = atol(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
199 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
200 /* Next, see if on buddy list and know uid. */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
201 buddy = purple_blist_find_buddy(session->account, username);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
202 if (buddy) {
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
203 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
204 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
205 uid = 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
206 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
207
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
208 if (!buddy || !uid) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
209 /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
210 purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
211 username ? username : "(NULL)");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
212 msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
213 return TRUE; /* not sure of status yet - haven't sent! */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
214 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
215 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
216
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
217 /* Already have uid, postprocess and send msg immediately. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
218 purple_debug_info("msim", "msim_postprocess_outgoing: found username %s has uid %d\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
219 username ? username : "(NULL)", uid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
220
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
221 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
222
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
223 rc = msim_msg_send(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
224
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
225 /* TODO: free
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
226 * msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
227 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
228
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
229 return rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
230 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
231
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
232 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
233 * Send a buddy message of a given type.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
234 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
235 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
236 * @param who Username to send message to.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
237 * @param text Message text to send. Not freed; will be copied.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
238 * @param type A MSIM_BM_* constant.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
239 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
240 * @return TRUE if success, FALSE if fail.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
241 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
242 * Buddy messages ('bm') include instant messages, action messages, status messages, etc.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
243 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
244 gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
245 msim_send_bm(MsimSession *session, const gchar *who, const gchar *text,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
246 int type)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
247 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
248 gboolean rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
249 MsimMessage *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
250 const gchar *from_username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
251
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
252 g_return_val_if_fail(who != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
253 g_return_val_if_fail(text != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
254
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32338
diff changeset
255 from_username = purple_account_get_username(session->account);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
256
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
257 g_return_val_if_fail(from_username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
258
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
259 purple_debug_info("msim", "sending %d message from %s to %s: %s\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
260 type, from_username, who, text);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
261
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
262 msg = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
263 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
264 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
265 /* 't' will be inserted here */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
266 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
267 "msg", MSIM_TYPE_STRING, g_strdup(text),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
268 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
269
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
270 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
271
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
272 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
273
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
274 return rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
275 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
276
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
277 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
278 * Lookup a username by userid, from buddy list.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
279 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
280 * @param wanted_uid
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
281 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
282 * @return Username of wanted_uid, if on blist, or NULL.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
283 * This is a static string, so don't free it. Copy it if needed.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
284 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
285 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
286 static const gchar *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
287 msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
288 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
289 GSList *buddies, *cur;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
290 const gchar *ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
291
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
292 buddies = purple_blist_find_buddies(account, NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
293
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
294 if (!buddies)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
295 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
296 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
297 return NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
298 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
299
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
300 ret = NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
301
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
302 for (cur = buddies; cur != NULL; cur = g_slist_next(cur))
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
303 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
304 PurpleBuddy *buddy;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
305 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
306 const gchar *name;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
307
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
308 /* See finch/gnthistory.c */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
309 buddy = cur->data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
310
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
311 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
312 name = purple_buddy_get_name(buddy);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
313
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
314 if (uid == wanted_uid)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
315 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
316 ret = name;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
317 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
318 }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
319 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
320
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
321 g_slist_free(buddies);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
322 return ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
323 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
324
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
325 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
326 * Setup a callback, to be called when a reply is received with the returned rid.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
327 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
328 * @param cb The callback, an MSIM_USER_LOOKUP_CB.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
329 * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *).
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
330 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
331 * @return The request/reply ID, used to link replies with requests, or -1.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
332 * Put the rid in your request, 'rid' field.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
333 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
334 * TODO: Make more generic and more specific:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
335 * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
336 * 2) data - make it an MsimMessage?
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
337 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
338 guint
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
339 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
340 gpointer data)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
341 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
342 guint rid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
343
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
344 rid = session->next_rid++;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
345
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
346 g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
347 g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
348
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
349 return rid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
350 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
351
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
352 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
353 * Return the icon name for a buddy and account.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
354 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
355 * @param acct The account to find the icon for, or NULL for protocol icon.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
356 * @param buddy The buddy to find the icon for, or NULL for the account icon.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
357 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
358 * @return The base icon name string.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
359 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
360 static const gchar *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
361 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
362 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
363 /* Use a MySpace icon submitted by hbons at
33955
55aa58076485 Use https URLs for pidgin.im and developer.pidgin.im.
Mark Doliner <mark@kingant.net>
parents: 33911
diff changeset
364 * https://developer.pidgin.im/wiki/MySpaceIM. */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
365 return "myspace";
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
366 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
367
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
368 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
369 * Obtain the status text for a buddy.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
370 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
371 * @param buddy The buddy to obtain status text for.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
372 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
373 * @return Status text, or NULL if error. Caller g_free()'s.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
374 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
375 static char *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
376 msim_status_text(PurpleBuddy *buddy)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
377 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
378 MsimUser *user;
31739
88b0a203e2e0 Silence a swath of warnings regarding set-but-unused.
Paul Aurich <darkrain42@pidgin.im>
parents: 31595
diff changeset
379 const gchar *display_name = NULL, *headline = NULL;
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
380 PurpleAccount *account;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
381
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
382 g_return_val_if_fail(buddy != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
383
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
384 account = purple_buddy_get_account(buddy);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
385
31415
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
386 user = msim_get_user_from_buddy(buddy, FALSE);
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
387 if (user != NULL) {
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
388 /* Retrieve display name and/or headline, depending on user preference. */
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
389 if (purple_account_get_bool(account, "show_headline", TRUE)) {
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
390 headline = user->headline;
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
391 }
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
392
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
393 if (purple_account_get_bool(account, "show_display_name", FALSE)) {
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
394 display_name = user->display_name;
d536a772ee3e Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <markdoliner@pidgin.im>
parents: 30138
diff changeset
395 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
396 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
397
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
398 /* Return appropriate combination of display name and/or headline, or neither. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
399
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
400 if (display_name && headline) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
401 return g_strconcat(display_name, " ", headline, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
402 } else if (display_name) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
403 return g_strdup(display_name);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
404 } else if (headline) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
405 return g_strdup(headline);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
406 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
407
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
408 return NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
409 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
410
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
411 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
412 * Obtain the tooltip text for a buddy.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
413 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
414 * @param buddy Buddy to obtain tooltip text on.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
415 * @param user_info Variable modified to have the tooltip text.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
416 * @param full TRUE if should obtain full tooltip text.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
417 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
418 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
419 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
420 gboolean full)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
421 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
422 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
423
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
424 g_return_if_fail(buddy != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
425 g_return_if_fail(user_info != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
426
25502
40f87522e2d0 propagate from branch 'im.pidgin.pidgin' (head db75fad3c5a74a5d380131b678995c6a78c140cb)
Paul Aurich <darkrain42@pidgin.im>
parents: 24867 25240
diff changeset
427 user = msim_get_user_from_buddy(buddy, TRUE);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
428
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
429 if (PURPLE_IS_BUDDY_ONLINE(buddy)) {
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
430 PurpleAccount *account = purple_buddy_get_account(buddy);
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
431 PurpleConnection *gc = purple_account_get_connection(account);
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
432 MsimSession *session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
433
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
434 /* TODO: if (full), do something different? */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
435
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
436 /* TODO: request information? have to figure out how to do
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
437 * the asynchronous lookup like oscar does (tooltip shows
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
438 * 'retrieving...' if not yet available, then changes when it is).
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
439 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
440 * Right now, only show what we have on hand.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
441 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
442
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
443 /* Show abbreviated user info. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
444 msim_append_user_info(session, user_info, user, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
445 }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
446 }
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
447
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
448 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
449 * Get possible user status types. Based on mockprpl.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
450 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
451 * @return GList of status types.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
452 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
453 static GList *
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
454 msim_status_types(PurpleAccount *acct)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
455 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
456 GList *types;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
457 PurpleStatusType *status;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
458
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
459 purple_debug_info("myspace", "returning status types\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
460
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
461 types = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
462
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
463 /* Statuses are almost all the same. Define a macro to reduce code repetition. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
464 #define _MSIM_ADD_NEW_STATUS(prim) status = \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
465 purple_status_type_new_with_attrs( \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
466 prim, /* PurpleStatusPrimitive */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
467 NULL, /* id - use default */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
468 NULL, /* name - use default */ \
24693
9ab5d932ab6c I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@pidgin.im>
parents: 24628
diff changeset
469 TRUE, /* saveable */ \
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
470 TRUE, /* user_settable */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
471 FALSE, /* not independent */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
472 \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
473 /* Attributes - each status can have a message. */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
474 "message", \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
475 _("Message"), \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
476 purple_value_new(PURPLE_TYPE_STRING), \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
477 NULL); \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
478 \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
479 \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
480 types = g_list_append(types, status)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
481
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
482
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
483 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
484 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
485 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
486 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
487
22358
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
488 /* Except tune status is different... */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
489 status = purple_status_type_new_with_attrs(
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
490 PURPLE_STATUS_TUNE, /* primitive */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
491 "tune", /* ID */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
492 NULL, /* name - use default */
24693
9ab5d932ab6c I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@pidgin.im>
parents: 24628
diff changeset
493 FALSE, /* saveable */
22358
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
494 TRUE, /* should be user_settable some day */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
495 TRUE, /* independent */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
496
29965
d4d794093d2d Eliminate the name collisions on "Title". I have a few qualms:
Paul Aurich <darkrain42@pidgin.im>
parents: 29757
diff changeset
497 PURPLE_TUNE_ARTIST, _("Tune Artist"), purple_value_new(PURPLE_TYPE_STRING),
d4d794093d2d Eliminate the name collisions on "Title". I have a few qualms:
Paul Aurich <darkrain42@pidgin.im>
parents: 29757
diff changeset
498 PURPLE_TUNE_TITLE, _("Tune Title"), purple_value_new(PURPLE_TYPE_STRING),
22395
1778f18e3496 purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22358
diff changeset
499 NULL);
22358
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
500
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
501 types = g_list_append(types, status);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
502
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
503 return types;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
504 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
505
27378
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
506 /*
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
507 * TODO: This define is stolen from oscar.h.
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
508 * It's also in yahoo.h.
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
509 * It should be in libpurple/util.c
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
510 */
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
511 #define msim_put32(buf, data) ( \
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
512 (*((buf)) = (unsigned char)((data)>>24)&0xff), \
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
513 (*((buf)+1) = (unsigned char)((data)>>16)&0xff), \
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
514 (*((buf)+2) = (unsigned char)((data)>>8)&0xff), \
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
515 (*((buf)+3) = (unsigned char)(data)&0xff), \
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
516 4)
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
517
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
518 /**
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
519 * Compute the base64'd login challenge response based on username, password, nonce, and IPs.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
520 *
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
521 * @param nonce The base64 encoded nonce ('nc') field from the server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
522 * @param email User's email address (used as login name).
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
523 * @param password User's cleartext password.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
524 * @param response_len Will be written with response length.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
525 *
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
526 * @return Binary login challenge response, ready to send to the server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
527 * Must be g_free()'d when finished. NULL if error.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
528 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
529 static gchar *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
530 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE],
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
531 const gchar *email, const gchar *password, guint *response_len)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
532 {
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
533 PurpleHash *sha1;
34557
295cd5bf4c41 Refactored protocols msn, myspace, oscar, simple, yahoo to use GObject-based PurpleCipher
Ankit Vani <a@nevitus.org>
parents: 34208
diff changeset
534 PurpleCipher *rc4;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
535
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
536 guchar hash_pw[HASH_SIZE];
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
537 guchar key[HASH_SIZE];
25358
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
538 gchar *password_truncated, *password_utf16le, *password_utf8_lc;
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
539 GString *data;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
540 guchar *data_out;
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
541 size_t data_out_len;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
542 gsize conv_bytes_read, conv_bytes_written;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
543 GError *conv_error;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
544 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
545 int i;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
546 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
547
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
548 g_return_val_if_fail(nonce != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
549 g_return_val_if_fail(email != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
550 g_return_val_if_fail(password != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
551 g_return_val_if_fail(response_len != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
552
25358
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
553 /*
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
554 * Truncate password to 10 characters. Their "change password"
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
555 * web page doesn't let you enter more than 10 characters, but you
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
556 * can enter more than 10 when logging in on myspace.com and they
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
557 * truncate it.
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
558 */
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
559 password_truncated = g_strndup(password, 10);
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
560
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
561 /* Convert password to lowercase (required for passwords containing
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
562 * uppercase characters). MySpace passwords are lowercase,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
563 * see ticket #2066. */
25358
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
564 password_utf8_lc = g_utf8_strdown(password_truncated, -1);
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
565 g_free(password_truncated);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
566
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
567 /* Convert ASCII password to UTF16 little endian */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
568 purple_debug_info("msim", "converting password to UTF-16LE\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
569 conv_error = NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
570 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
571 &conv_bytes_read, &conv_bytes_written, &conv_error);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
572 g_free(password_utf8_lc);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
573
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
574 if (conv_error != NULL) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
575 purple_debug_error("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
576 "g_convert password UTF8->UTF16LE failed: %s",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
577 conv_error->message);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
578 g_error_free(conv_error);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
579 return NULL;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
580 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
581
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
582 /* Compute password hash */
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
583 sha1 = purple_sha1_hash_new();
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
584 purple_hash_append(sha1, (guchar *)password_utf16le,
34557
295cd5bf4c41 Refactored protocols msn, myspace, oscar, simple, yahoo to use GObject-based PurpleCipher
Ankit Vani <a@nevitus.org>
parents: 34208
diff changeset
585 conv_bytes_written);
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
586 purple_hash_digest(sha1, hash_pw, sizeof(hash_pw));
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
587 purple_hash_reset(sha1);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
588 g_free(password_utf16le);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
589
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
590 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
591 purple_debug_info("msim", "pwhash = ");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
592 for (i = 0; i < sizeof(hash_pw); i++)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
593 purple_debug_info("msim", "%.2x ", hash_pw[i]);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
594 purple_debug_info("msim", "\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
595 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
596
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
597 /* key = sha1(sha1(pw) + nonce2) */
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
598 purple_hash_append(sha1, hash_pw, HASH_SIZE);
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
599 purple_hash_append(sha1, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE);
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
600 purple_hash_digest(sha1, key, sizeof(key));
34557
295cd5bf4c41 Refactored protocols msn, myspace, oscar, simple, yahoo to use GObject-based PurpleCipher
Ankit Vani <a@nevitus.org>
parents: 34208
diff changeset
601 g_object_unref(sha1);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
602
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
603 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
604 purple_debug_info("msim", "key = ");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
605 for (i = 0; i < sizeof(key); i++) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
606 purple_debug_info("msim", "%.2x ", key[i]);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
607 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
608 purple_debug_info("msim", "\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
609 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
610
34557
295cd5bf4c41 Refactored protocols msn, myspace, oscar, simple, yahoo to use GObject-based PurpleCipher
Ankit Vani <a@nevitus.org>
parents: 34208
diff changeset
611 rc4 = purple_rc4_cipher_new();
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
612
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
613 /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
614 * but only first 0x10 used for the RC4 key. */
34557
295cd5bf4c41 Refactored protocols msn, myspace, oscar, simple, yahoo to use GObject-based PurpleCipher
Ankit Vani <a@nevitus.org>
parents: 34208
diff changeset
615 purple_cipher_set_key(rc4, key, 0x10);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
616
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
617 /* rc4 encrypt:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
618 * nonce1+email+IP list */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
619
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
620 data = g_string_new(NULL);
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
621 g_string_append_len(data, nonce, NONCE_SIZE);
27378
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
622
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
623 /* Include the null terminator */
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
624 g_string_append_len(data, email, strlen(email) + 1);
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
625
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
626 while (data->len % 4 != 0)
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
627 g_string_append_c(data, 0xfb);
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
628
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
629 #ifdef SEND_OUR_IP_ADDRESSES
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
630 /* TODO: Obtain IPs of network interfaces instead of using this hardcoded value */
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
631 g_string_set_size(data, data->len + 4);
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
632 msim_put32(data->str + data->len - 4, MSIM_LOGIN_IP_LIST_LEN);
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
633 g_string_append_len(data, MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN);
27378
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
634 #else
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
635 g_string_set_size(data, data->len + 4);
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
636 msim_put32(data->str + data->len - 4, 0);
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
637 #endif /* !SEND_OUR_IP_ADDRESSES */
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
638
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
639 data_out = g_new0(guchar, data->len);
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
640
34557
295cd5bf4c41 Refactored protocols msn, myspace, oscar, simple, yahoo to use GObject-based PurpleCipher
Ankit Vani <a@nevitus.org>
parents: 34208
diff changeset
641 data_out_len = purple_cipher_encrypt(rc4,
33911
a924aacd5a37 ciphers cleanup: encryption and decryption lengths
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33909
diff changeset
642 (const guchar *)data->str, data->len, data_out, data->len);
34557
295cd5bf4c41 Refactored protocols msn, myspace, oscar, simple, yahoo to use GObject-based PurpleCipher
Ankit Vani <a@nevitus.org>
parents: 34208
diff changeset
643 g_object_unref(rc4);
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
644
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
645 if (data_out_len != data->len) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
646 purple_debug_info("msim", "msim_compute_login_response: "
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
647 "data length mismatch: %" G_GSIZE_FORMAT " != %"
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
648 G_GSIZE_FORMAT "\n", data_out_len, data->len);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
649 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
650
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
651 g_string_free(data, TRUE);
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
652
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
653 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
654 purple_debug_info("msim", "response=<%s>\n", data_out);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
655 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
656
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
657 *response_len = data_out_len;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
658
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
659 return (gchar *)data_out;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
660 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
661
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
662 /**
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
663 * Process a login challenge, sending a response.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
664 *
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
665 * @param session
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
666 * @param msg Login challenge message.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
667 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
668 * @return TRUE if successful, FALSE if not
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
669 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
670 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
671 msim_login_challenge(MsimSession *session, MsimMessage *msg)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
672 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
673 PurpleAccount *account;
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
674 gchar *response;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
675 guint response_len;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
676 gchar *nc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
677 gsize nc_len;
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
678 gboolean ret;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
679
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
680 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
681
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
682 g_return_val_if_fail(msim_msg_get_binary(msg, "nc", &nc, &nc_len), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
683
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
684 account = session->account;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
685
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
686 g_return_val_if_fail(account != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
687
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
688 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
689
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
690 purple_debug_info("msim", "nc is %" G_GSIZE_FORMAT
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
691 " bytes, decoded\n", nc_len);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
692
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
693 if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) {
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
694 purple_debug_info("msim", "bad nc length: %" G_GSIZE_MODIFIER
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
695 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
696 purple_connection_error (session->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
697 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
698 _("Unexpected challenge length from server"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
699 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
700 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
701
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
702 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
703
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
704 response_len = 0;
34025
82ef910cc2be Fix myspace plugin compile.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32681
diff changeset
705 response = msim_compute_login_response(nc, purple_account_get_username(account), purple_connection_get_password(session->gc), &response_len);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
706
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
707 g_free(nc);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
708
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
709 ret = msim_send(session,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
710 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
711 /* This is actually user's email address. */
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32338
diff changeset
712 "username", MSIM_TYPE_STRING, g_strdup(purple_account_get_username(account)),
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
713 /* GString will be freed in msim_msg_free() in msim_send(). */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
714 "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
715 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
716 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
717 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
718 "reconn", MSIM_TYPE_INTEGER, 0,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
719 "status", MSIM_TYPE_INTEGER, 100,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
720 "id", MSIM_TYPE_INTEGER, 1,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
721 NULL);
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
722
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
723 g_free(response);
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
724
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
725 return ret;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
726 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
727
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
728 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
729 * Process unrecognized information.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
730 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
731 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
732 * @param msg An MsimMessage that was unrecognized, or NULL.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
733 * @param note Information on what was unrecognized, or NULL.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
734 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
735 void
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
736 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
737 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
738 /* TODO: Some more context, outwardly equivalent to a backtrace,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
739 * for helping figure out what this msg is for. What was going on?
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
740 * But not too much information so that a user
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
741 * posting this dump reveals confidential information.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
742 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
743
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
744 /* TODO: dump unknown msgs to file, so user can send them to me
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
745 * if they wish, to help add support for new messages (inspired
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
746 * by Alexandr Shutko, who maintains OSCAR protocol documentation).
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
747 *
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
748 * Filed enhancement ticket for libpurple as #4688.
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
749 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
750
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
751 purple_debug_info("msim", "Unrecognized data on account for %s\n",
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32338
diff changeset
752 (session && session->account && purple_account_get_username(session->account)) ?
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32338
diff changeset
753 purple_account_get_username(session->account) : "(NULL)");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
754 if (note) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
755 purple_debug_info("msim", "(Note: %s)\n", note);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
756 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
757
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
758 if (msg) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
759 msim_msg_dump("Unrecognized message dump: %s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
760 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
761 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
762
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
763 /** Called when the session key arrives to check whether the user
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
764 * has a username, and set one if desired. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
765 static gboolean
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
766 msim_is_username_set(MsimSession *session, MsimMessage *msg)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
767 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
768 g_return_val_if_fail(msg != NULL, FALSE);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
769 g_return_val_if_fail(session->gc != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
770
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
771 session->sesskey = msim_msg_get_integer(msg, "sesskey");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
772 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
773
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
774 /* What is proof? Used to be uid, but now is 52 base64'd bytes... */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
775
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
776 /* Comes with: proof,profileid,userid,uniquenick -- all same values
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
777 * some of the time, but can vary. This is our own user ID. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
778 session->userid = msim_msg_get_integer(msg, "userid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
779
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
780 /* Save uid to account so this account can be looked up by uid. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
781 purple_account_set_int(session->account, "uid", session->userid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
782
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
783 /* Not sure what profileid is used for. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
784 if (msim_msg_get_integer(msg, "profileid") != session->userid) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
785 msim_unrecognized(session, msg,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
786 "Profile ID didn't match user ID, don't know why");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
787 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
788
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
789 /* We now know are our own username, only after we're logged in..
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
790 * which is weird, but happens because you login with your email
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
791 * address and not username. Will be freed in msim_session_destroy(). */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
792 session->username = msim_msg_get_string(msg, "uniquenick");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
793
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
794 /* If user lacks a username, help them get one. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
795 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
796 purple_debug_info("msim_is_username_set", "no username is set\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
797 purple_request_yes_no(session->gc,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
798 _("MySpaceIM - No Username Set"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
799 _("You appear to have no MySpace username."),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
800 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
801 0,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
802 session->account,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
803 NULL,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
804 NULL,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
805 session->gc,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
806 G_CALLBACK(msim_set_username_cb),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
807 G_CALLBACK(msim_do_not_set_username_cb));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
808 purple_debug_info("msim_is_username_set","'username not set' alert prompted\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
809 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
810 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
811 return TRUE;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
812 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
813
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
814 #ifdef MSIM_USE_KEEPALIVE
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
815 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
816 * Check if the connection is still alive, based on last communication.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
817 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
818 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
819 msim_check_alive(gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
820 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
821 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
822 time_t delta;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
823
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
824 session = (MsimSession *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
825
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
826 delta = time(NULL) - session->last_comm;
25114
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 24693
diff changeset
827
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
828 /* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
829 if (delta >= MSIM_KEEPALIVE_INTERVAL) {
25114
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 24693
diff changeset
830 purple_debug_info("msim",
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 24693
diff changeset
831 "msim_check_alive: %zu > interval of %d, presumed dead\n",
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 24693
diff changeset
832 delta, MSIM_KEEPALIVE_INTERVAL);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
833 purple_connection_error(session->gc,
25114
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 24693
diff changeset
834 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 24693
diff changeset
835 _("Lost connection with server"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
836
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
837 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
838 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
839
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
840 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
841 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
842 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
843
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
844 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
845 * Handle mail reply checks.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
846 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
847 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
848 msim_check_inbox_cb(MsimSession *session, const MsimMessage *reply, gpointer data)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
849 {
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
850 MsimMessage *body;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
851 guint i, n;
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
852 /* Information for each new inbox message type. */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
853 static struct
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
854 {
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
855 const gchar *key;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
856 guint bit;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
857 const gchar *url;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
858 const gchar *text;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
859 } message_types[] = {
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
860 { "Mail", MSIM_INBOX_MAIL, "http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox", NULL },
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
861 { "BlogComment", MSIM_INBOX_BLOG_COMMENT, "http://blog.myspace.com/index.cfm?fuseaction=blog", NULL },
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
862 { "ProfileComment", MSIM_INBOX_PROFILE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL },
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
863 { "FriendRequest", MSIM_INBOX_FRIEND_REQUEST, "http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests", NULL },
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
864 { "PictureComment", MSIM_INBOX_PICTURE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
865 };
25746
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
866 const gchar *froms[G_N_ELEMENTS(message_types) + 1] = { "" },
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
867 *tos[G_N_ELEMENTS(message_types) + 1] = { "" },
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
868 *urls[G_N_ELEMENTS(message_types) + 1] = { "" },
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
869 *subjects[G_N_ELEMENTS(message_types) + 1] = { "" };
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
870
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
871 g_return_if_fail(reply != NULL);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
872
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
873 /* Can't write _()'d strings in array initializers. Workaround. */
25746
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
874 /* khc: then use N_() in the array initializer and use _() when they are
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
875 used */
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
876 message_types[0].text = _("New mail messages");
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
877 message_types[1].text = _("New blog comments");
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
878 message_types[2].text = _("New profile comments");
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
879 message_types[3].text = _("New friend requests!");
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
880 message_types[4].text = _("New picture comments");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
881
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
882 body = msim_msg_get_dictionary(reply, "body");
21873
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
883
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
884 if (body == NULL)
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
885 return;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
886
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
887 n = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
888
25746
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
889 for (i = 0; i < G_N_ELEMENTS(message_types); ++i) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
890 const gchar *key;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
891 guint bit;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
892
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
893 key = message_types[i].key;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
894 bit = message_types[i].bit;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
895
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
896 if (msim_msg_get(body, key)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
897 /* Notify only on when _changes_ from no mail -> has mail
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
898 * (edge triggered) */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
899 if (!(session->inbox_status & bit)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
900 purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
901 key ? key : "(NULL)", n);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
902
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
903 subjects[n] = message_types[i].text;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
904 froms[n] = _("MySpace");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
905 tos[n] = session->username;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
906 /* TODO: append token, web challenge, so automatically logs in.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
907 * Would also need to free strings because they won't be static
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
908 */
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
909 urls[n] = message_types[i].url;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
910
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
911 ++n;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
912 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
913 purple_debug_info("msim",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
914 "msim_check_inbox_cb: already notified of %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
915 key ? key : "(NULL)");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
916 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
917
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
918 session->inbox_status |= bit;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
919 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
920 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
921
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
922 if (n) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
923 purple_debug_info("msim",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
924 "msim_check_inbox_cb: notifying of %d\n", n);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
925
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
926 /* TODO: free strings with callback _if_ change to dynamic (w/ token) */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
927 purple_notify_emails(session->gc, /* handle */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
928 n, /* count */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
929 TRUE, /* detailed */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
930 subjects, froms, tos, urls,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
931 NULL, /* PurpleNotifyCloseCallback cb */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
932 NULL); /* gpointer user_data */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
933
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
934 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
935
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
936 msim_msg_free(body);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
937 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
938
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
939 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
940 * Send request to check if there is new mail.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
941 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
942 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
943 msim_check_inbox(gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
944 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
945 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
946
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
947 session = (MsimSession *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
948
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
949 purple_debug_info("msim", "msim_check_inbox: checking mail\n");
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
950 g_return_val_if_fail(msim_send(session,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
951 "persist", MSIM_TYPE_INTEGER, 1,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
952 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
953 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
954 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
955 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
956 "uid", MSIM_TYPE_INTEGER, session->userid,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
957 "rid", MSIM_TYPE_INTEGER,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
958 msim_new_reply_callback(session, msim_check_inbox_cb, NULL),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
959 "body", MSIM_TYPE_STRING, g_strdup(""),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
960 NULL), TRUE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
961
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
962 /* Always return true, so that we keep checking for mail. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
963 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
964 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
965
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
966 /**
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
967 * Add contact from server to buddy list, after looking up username.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
968 * Callback from msim_add_contact_from_server().
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
969 *
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
970 * @param data An MsimMessage * of the contact information. Will be freed.
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
971 */
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
972 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
973 msim_add_contact_from_server_cb(MsimSession *session, const MsimMessage *user_lookup_info, gpointer data)
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
974 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
975 MsimMessage *contact_info, *user_lookup_info_body;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
976 PurpleGroup *group;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
977 PurpleBuddy *buddy;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
978 MsimUser *user;
25227
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
979 gchar *username, *group_name, *display_name;
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
980 guint uid, visibility;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
981
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
982 contact_info = (MsimMessage *)data;
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
983 purple_debug_info("msim_add_contact_from_server_cb", "contact_info addr=%p\n", contact_info);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
984 uid = msim_msg_get_integer(contact_info, "ContactID");
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
985
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
986 if (!user_lookup_info) {
22345
5a2b46793bc7 Change msim_uid2username_from_blist to accept a PurpleAccount instead of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22344
diff changeset
987 username = g_strdup(msim_uid2username_from_blist(session->account, uid));
25227
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
988 display_name = NULL;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
989 g_return_if_fail(username != NULL);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
990 } else {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
991 user_lookup_info_body = msim_msg_get_dictionary(user_lookup_info, "body");
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
992 username = msim_msg_get_string(user_lookup_info_body, "UserName");
25227
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
993 display_name = msim_msg_get_string(user_lookup_info_body, "DisplayName");
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
994 msim_msg_free(user_lookup_info_body);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
995 g_return_if_fail(username != NULL);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
996 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
997
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
998 purple_debug_info("msim_add_contact_from_server_cb",
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
999 "*** about to add/update username=%s\n", username);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1000
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1001 /* 1. Creates a new group, or gets existing group if it exists (or so
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1002 * the documentation claims). */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1003 group_name = msim_msg_get_string(contact_info, "GroupName");
23148
359025d69598 Fix handling of empty groups in MySpace. Fixes #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 23145
diff changeset
1004 if (!group_name || (*group_name == '\0')) {
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1005 g_free(group_name);
23145
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1006 group_name = g_strdup(_("IM Friends"));
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1007 purple_debug_info("myspace", "No GroupName specified, defaulting to '%s'.\n", group_name);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1008 }
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
1009 group = purple_blist_find_group(group_name);
23145
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1010 if (!group) {
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1011 group = purple_group_new(group_name);
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1012 /* Add group to beginning. See #2752. */
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1013 purple_blist_add_group(group, NULL);
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1014 }
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1015 g_free(group_name);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1016
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1017 visibility = msim_msg_get_integer(contact_info, "Visibility");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1018 if (visibility == 2) {
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1019 /* This buddy is blocked (and therefore not on our buddy list */
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34567
diff changeset
1020 purple_account_privacy_deny_add(session->account, username, TRUE);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1021 msim_msg_free(contact_info);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1022 g_free(username);
25227
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1023 g_free(display_name);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1024 return;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1025 }
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1026
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1027 /* 2. Get or create buddy */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
1028 buddy = purple_blist_find_buddy(session->account, username);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1029 if (!buddy) {
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1030 purple_debug_info("msim_add_contact_from_server_cb",
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1031 "creating new buddy: %s\n", username);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1032 buddy = purple_buddy_new(session->account, username, NULL);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1033 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1034
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1035 /* TODO: use 'Position' in contact_info to take into account where buddy is */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1036 purple_blist_add_buddy(buddy, NULL, group, NULL /* insertion point */);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1037
25227
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1038 if (strtol(username, NULL, 10) == uid) {
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1039 /*
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1040 * This user has not set their username! Set their server
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1041 * alias to their display name so that we don't see a bunch
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1042 * of numbers in the buddy list.
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1043 */
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1044 if (display_name != NULL) {
25851
f7c0c2664f90 explicit merge of 'f77367f1e87c0098d93902d6982b44f75c1ecacb'
Richard Laager <rlaager@pidgin.im>
parents: 25237 25850
diff changeset
1045 purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name);
25227
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1046 serv_got_alias(session->gc, username, display_name);
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1047 } else {
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1048 serv_got_alias(session->gc, username,
25851
f7c0c2664f90 explicit merge of 'f77367f1e87c0098d93902d6982b44f75c1ecacb'
Richard Laager <rlaager@pidgin.im>
parents: 25237 25850
diff changeset
1049 purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName"));
25227
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1050 }
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1051 }
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1052 g_free(display_name);
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1053
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1054 /* 3. Update buddy information */
25502
40f87522e2d0 propagate from branch 'im.pidgin.pidgin' (head db75fad3c5a74a5d380131b678995c6a78c140cb)
Paul Aurich <darkrain42@pidgin.im>
parents: 24867 25240
diff changeset
1055 user = msim_get_user_from_buddy(buddy, TRUE);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1056
25116
cb60ad01e2e8 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <markdoliner@pidgin.im>
parents: 25115
diff changeset
1057 user->id = uid;
cb60ad01e2e8 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <markdoliner@pidgin.im>
parents: 25115
diff changeset
1058 /* Keep track of the user ID across sessions */
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
1059 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", uid);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1060
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1061 /* Stores a few fields in the MsimUser, relevant to the buddy itself.
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1062 * AvatarURL, Headline, ContactID. */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1063 msim_store_user_info(session, contact_info, NULL);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1064
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1065 /* TODO: other fields, store in 'user' */
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
1066 msim_msg_free(contact_info);
22355
898841de866e In msim_uid2username_from_blist(), return a static string as the documentation
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22352
diff changeset
1067
898841de866e In msim_uid2username_from_blist(), return a static string as the documentation
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22352
diff changeset
1068 g_free(username);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1069 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1070
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1071 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1072 * Add first ContactID in contact_info to buddy's list. Used to add
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1073 * server-side buddies to client-side list.
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1074 *
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1075 * @return TRUE if added.
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1076 */
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1077 static gboolean
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1078 msim_add_contact_from_server(MsimSession *session, MsimMessage *contact_info)
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1079 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1080 guint uid;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1081 const gchar *username;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1082
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1083 uid = msim_msg_get_integer(contact_info, "ContactID");
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1084 g_return_val_if_fail(uid != 0, FALSE);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1085
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1086 /* Lookup the username, since NickName and IMName is unreliable */
22345
5a2b46793bc7 Change msim_uid2username_from_blist to accept a PurpleAccount instead of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22344
diff changeset
1087 username = msim_uid2username_from_blist(session->account, uid);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1088 if (!username) {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1089 gchar *uid_str;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1090
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1091 uid_str = g_strdup_printf("%d", uid);
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
1092 purple_debug_info("msim_add_contact_from_server",
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
1093 "contact_info addr=%p\n", contact_info);
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
1094 msim_lookup_user(session, uid_str, msim_add_contact_from_server_cb, (gpointer)msim_msg_clone(contact_info));
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1095 g_free(uid_str);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1096 } else {
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
1097 msim_add_contact_from_server_cb(session, NULL, (gpointer)msim_msg_clone(contact_info));
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1098 }
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1099
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1100 /* Say that the contact was added, even if we're still looking up
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1101 * their username. */
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1102 return TRUE;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1103 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1104
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1105 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1106 * Called when contact list is received from server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1107 */
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1108 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
1109 msim_got_contact_list(MsimSession *session, const MsimMessage *reply, gpointer user_data)
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1110 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1111 MsimMessage *body, *body_node;
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1112 gchar *msg;
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1113 guint buddy_count;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1114
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1115 body = msim_msg_get_dictionary(reply, "body");
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1116
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1117 buddy_count = 0;
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1118
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1119 for (body_node = body;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1120 body_node != NULL;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1121 body_node = msim_msg_get_next_element_node(body_node))
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1122 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1123 MsimMessageElement *elem;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1124
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1125 elem = (MsimMessageElement *)body_node->data;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1126
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
1127 if (g_str_equal(elem->name, "ContactID"))
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1128 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1129 /* Will look for first contact in body_node */
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1130 if (msim_add_contact_from_server(session, body_node)) {
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1131 ++buddy_count;
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1132 }
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1133 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1134 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1135
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1136 switch (GPOINTER_TO_UINT(user_data)) {
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1137 case MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS:
23475
fbc70a80d0e7 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23461
diff changeset
1138 msg = g_strdup_printf(ngettext("%d buddy was added or updated from the server (including buddies already on the server-side list)",
fbc70a80d0e7 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23461
diff changeset
1139 "%d buddies were added or updated from the server (including buddies already on the server-side list)",
fbc70a80d0e7 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23461
diff changeset
1140 buddy_count),
fbc70a80d0e7 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23461
diff changeset
1141 buddy_count);
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1142 purple_notify_info(session->account, _("Add contacts from server"), msg, NULL);
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1143 g_free(msg);
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1144 break;
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1145
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1146 case MSIM_CONTACT_LIST_IMPORT_TOP_FRIENDS:
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1147 /* TODO */
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1148 break;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1149
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1150 case MSIM_CONTACT_LIST_INITIAL_FRIENDS:
25567
5743a6e33cdf Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <markdoliner@pidgin.im>
parents: 25362
diff changeset
1151 /* The session is now set up, ready to be connected. This emits the
5743a6e33cdf Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <markdoliner@pidgin.im>
parents: 25362
diff changeset
1152 * signedOn signal, so clients can now do anything with msimprpl, and
5743a6e33cdf Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <markdoliner@pidgin.im>
parents: 25362
diff changeset
1153 * we're ready for it (session key, userid, username all setup). */
5743a6e33cdf Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <markdoliner@pidgin.im>
parents: 25362
diff changeset
1154 purple_connection_update_progress(session->gc, _("Connected"), 3, 4);
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
1155 purple_connection_set_state(session->gc, PURPLE_CONNECTION_CONNECTED);
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1156 break;
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1157 }
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1158
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1159 msim_msg_free(body);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1160 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1161
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1162 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1163 * Get contact list, calling msim_got_contact_list() with
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1164 * what_to_do_after as user_data gpointer.
25207
40329f88fd18 Minor comment change
Mark Doliner <markdoliner@pidgin.im>
parents: 25200
diff changeset
1165 *
40329f88fd18 Minor comment change
Mark Doliner <markdoliner@pidgin.im>
parents: 25200
diff changeset
1166 * @param what_to_do_after should be one of the MSIM_CONTACT_LIST_* #defines.
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1167 */
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1168 static gboolean
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1169 msim_get_contact_list(MsimSession *session, int what_to_do_after)
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1170 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1171 return msim_send(session,
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1172 "persist", MSIM_TYPE_INTEGER, 1,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1173 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1174 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1175 "dsn", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_DSN,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1176 "lid", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_LID,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1177 "uid", MSIM_TYPE_INTEGER, session->userid,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1178 "rid", MSIM_TYPE_INTEGER,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1179 msim_new_reply_callback(session, msim_got_contact_list, GUINT_TO_POINTER(what_to_do_after)),
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1180 "body", MSIM_TYPE_STRING, g_strdup(""),
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1181 NULL);
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1182 }
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1183
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1184 /** Called after username is set, if necessary and we're open for business. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1185 gboolean msim_we_are_logged_on(MsimSession *session)
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
1186 {
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
1187 MsimMessage *body;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1188
25200
791738e352fc Set the display name before marking the connection as "connected."
Mark Doliner <markdoliner@pidgin.im>
parents: 25198
diff changeset
1189 /* Set display name to username (otherwise will show email address) */
791738e352fc Set the display name before marking the connection as "connected."
Mark Doliner <markdoliner@pidgin.im>
parents: 25198
diff changeset
1190 purple_connection_set_display_name(session->gc, session->username);
791738e352fc Set the display name before marking the connection as "connected."
Mark Doliner <markdoliner@pidgin.im>
parents: 25198
diff changeset
1191
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1192 body = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1193 "UserID", MSIM_TYPE_INTEGER, session->userid,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1194 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1195
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1196 /* Request IM info about ourself. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1197 msim_send(session,
25210
673fe3479f71 I'm not sure why these were strings. The official client uses integers
Mark Doliner <markdoliner@pidgin.im>
parents: 25209
diff changeset
1198 "persist", MSIM_TYPE_INTEGER, 1,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1199 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
25211
050c627d6f83 Some other changes to make this more like the official client, and
Mark Doliner <markdoliner@pidgin.im>
parents: 25210
diff changeset
1200 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1201 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1202 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1203 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
25211
050c627d6f83 Some other changes to make this more like the official client, and
Mark Doliner <markdoliner@pidgin.im>
parents: 25210
diff changeset
1204 "UserID", MSIM_TYPE_INTEGER, session->userid,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1205 "body", MSIM_TYPE_DICTIONARY, body,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1206 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1207
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1208 /* Request MySpace info about ourself. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1209 msim_send(session,
25210
673fe3479f71 I'm not sure why these were strings. The official client uses integers
Mark Doliner <markdoliner@pidgin.im>
parents: 25209
diff changeset
1210 "persist", MSIM_TYPE_INTEGER, 1,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1211 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
25211
050c627d6f83 Some other changes to make this more like the official client, and
Mark Doliner <markdoliner@pidgin.im>
parents: 25210
diff changeset
1212 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1213 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1214 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1215 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1216 "body", MSIM_TYPE_STRING, g_strdup(""),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1217 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1218
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1219 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1220 /* TODO: set blocklist */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1221
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1222 /* Notify servers of our current status. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1223 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1224 msim_set_status(session->account,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1225 purple_account_get_active_status(session->account));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1226
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1227 /* TODO: setinfo */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1228 /*
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1229 body = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1230 "TotalFriends", MSIM_TYPE_INTEGER, 666,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1231 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1232 msim_send(session,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1233 "setinfo", MSIM_TYPE_BOOLEAN, TRUE,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1234 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1235 "info", MSIM_TYPE_DICTIONARY, body,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1236 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1237 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1238
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1239 /* Disable due to problems with timeouts. TODO: fix. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1240 #ifdef MSIM_USE_KEEPALIVE
25716
1b5be208d5ba applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents: 25676
diff changeset
1241 purple_timeout_add_seconds(MSIM_KEEPALIVE_INTERVAL_CHECK,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1242 (GSourceFunc)msim_check_alive, session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1243 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1244
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1245 /* Check mail if they want to. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1246 if (purple_account_get_check_mail(session->account)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1247 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1248 (GSourceFunc)msim_check_inbox, session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1249 msim_check_inbox(session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1250 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1251
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1252 msim_get_contact_list(session, MSIM_CONTACT_LIST_INITIAL_FRIENDS);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1253
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1254 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1255 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1256
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1257 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1258 * Record the client version in the buddy list, from an incoming message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1259 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1260 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1261 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1262 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1263 gchar *username, *cv;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1264 gboolean ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1265 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1266
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1267 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1268 cv = msim_msg_get_string(msg, "cv");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1269
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1270 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1271 if (!cv) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1272 /* No client version to record, don't worry about it. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1273 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1274 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1275 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1276
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1277 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1278
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1279 if (user) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1280 user->client_cv = atol(cv);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1281 ret = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1282 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1283 ret = FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1284 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1285
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1286 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1287 g_free(cv);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1288
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1289 return ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1290 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1291
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1292 #ifdef MSIM_SEND_CLIENT_VERSION
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1293 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1294 * Send our client version to another unofficial client that understands it.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1295 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1296 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1297 msim_send_unofficial_client(MsimSession *session, gchar *username)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1298 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1299 gchar *our_info;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1300 gboolean ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1301
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1302 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1303 PURPLE_MAJOR_VERSION,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1304 PURPLE_MINOR_VERSION,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1305 PURPLE_MICRO_VERSION,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1306 MSIM_PRPL_VERSION_STRING);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1307
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1308 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1309
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1310 return ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1311 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1312 #endif
28181
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1313 /**
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1314 * Process incoming status mood messages.
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1315 *
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1316 * @param session
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1317 * @param msg Status mood update message. Caller frees.
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1318 *
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1319 * @return TRUE if successful.
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1320 */
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1321 static gboolean
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1322 msim_incoming_status_mood(MsimSession *session, MsimMessage *msg) {
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1323 /* TODO: I dont know too much about this yet,
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1324 * so until I see how the official client handles
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1325 * this and decide if libpurple should as well,
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1326 * well just say we used it
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1327 */
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1328 gchar *ss;
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1329 ss = msim_msg_get_string(msg, "msg");
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1330 purple_debug_info("msim", "Incoming Status Message: %s", ss ? ss : "(NULL)");
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1331 g_free(ss);
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1332 return TRUE;
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1333 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1334
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1335 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1336 * Process incoming status messages.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1337 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1338 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1339 * @param msg Status update message. Caller frees.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1340 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1341 * @return TRUE if successful.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1342 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1343 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1344 msim_incoming_status(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1345 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1346 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1347 GList *list;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1348 gchar *status_headline, *status_headline_escaped;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1349 gint status_code, purple_status_code;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1350 gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1351 gchar *unrecognized_msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1352
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1353 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1354
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1355 /* Helpfully looked up by msim_incoming_resolve() for us. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1356 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1357 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1358
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1359 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1360 gchar *ss;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1361
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1362 ss = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1363 purple_debug_info("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1364 "msim_status: updating status for <%s> to <%s>\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1365 username, ss ? ss : "(NULL)");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1366 g_free(ss);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1367 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1368
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1369 /* Example fields:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1370 * |s|0|ss|Offline
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1371 * |s|1|ss|:-)|ls||ip|0|p|0
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1372 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1373 list = msim_msg_get_list(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1374
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1375 status_code = msim_msg_get_integer_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1376 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1377 status_headline = msim_msg_get_string_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1378
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1379 /* Add buddy if not found.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1380 * TODO: Could this be responsible for #3444? */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1381 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1382 if (!user) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1383 PurpleBuddy *buddy;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1384
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1385 purple_debug_info("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1386 "msim_status: making new buddy for %s\n", username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1387 buddy = purple_buddy_new(session->account, username, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1388 purple_blist_add_buddy(buddy, NULL, NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1389
25502
40f87522e2d0 propagate from branch 'im.pidgin.pidgin' (head db75fad3c5a74a5d380131b678995c6a78c140cb)
Paul Aurich <darkrain42@pidgin.im>
parents: 24867 25240
diff changeset
1390 user = msim_get_user_from_buddy(buddy, TRUE);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1391 user->id = msim_msg_get_integer(msg, "f");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1392
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1393 /* Keep track of the user ID across sessions */
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
1394 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1395
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1396 msim_store_user_info(session, msg, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1397 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1398 purple_debug_info("msim", "msim_status: found buddy %s\n", username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1399 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1400
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1401 if (status_headline && strcmp(status_headline, "") != 0) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1402 /* The status headline is plaintext, but libpurple treats it as HTML,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1403 * so escape any HTML characters to their entity equivalents. */
25240
c8093ec246f0 Fix a few small memleaks
Mark Doliner <markdoliner@pidgin.im>
parents: 25237
diff changeset
1404 status_headline_escaped = g_markup_escape_text(status_headline, -1);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1405 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1406 status_headline_escaped = NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1407 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1408
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1409 g_free(status_headline);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1410
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1411 /* don't copy; let the MsimUser own the headline, memory-wise */
25240
c8093ec246f0 Fix a few small memleaks
Mark Doliner <markdoliner@pidgin.im>
parents: 25237
diff changeset
1412 g_free(user->headline);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1413 user->headline = status_headline_escaped;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1414
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1415 /* Set user status */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1416 switch (status_code) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1417 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1418 purple_status_code = PURPLE_STATUS_OFFLINE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1419 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1420
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1421 case MSIM_STATUS_CODE_ONLINE:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1422 purple_status_code = PURPLE_STATUS_AVAILABLE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1423 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1424
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1425 case MSIM_STATUS_CODE_AWAY:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1426 purple_status_code = PURPLE_STATUS_AWAY;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1427 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1428
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1429 case MSIM_STATUS_CODE_IDLE:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1430 /* Treat idle as an available status. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1431 purple_status_code = PURPLE_STATUS_AVAILABLE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1432 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1433
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1434 default:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1435 purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1436 username, status_code);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1437 purple_status_code = PURPLE_STATUS_AVAILABLE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1438
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1439 unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1440 status_code);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1441 msim_unrecognized(session, NULL, unrecognized_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1442 g_free(unrecognized_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1443 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1444
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1445 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1446
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1447 if (status_code == MSIM_STATUS_CODE_IDLE) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1448 purple_debug_info("msim", "msim_status: got idle: %s\n", username);
25232
3bd7de63e77d Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <markdoliner@pidgin.im>
parents: 25227
diff changeset
1449 purple_prpl_got_user_idle(session->account, username, TRUE, 0);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1450 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1451 /* All other statuses indicate going back to non-idle. */
25232
3bd7de63e77d Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <markdoliner@pidgin.im>
parents: 25227
diff changeset
1452 purple_prpl_got_user_idle(session->account, username, FALSE, 0);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1453 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1454
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1455 #ifdef MSIM_SEND_CLIENT_VERSION
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1456 if (status_code == MSIM_STATUS_CODE_ONLINE) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1457 /* Secretly whisper to unofficial clients our own version as they come online */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1458 msim_send_unofficial_client(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1459 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1460 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1461
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1462 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1463 /* Get information when they come online.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1464 * TODO: periodically refresh?
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1465 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1466 purple_debug_info("msim_incoming_status", "%s came online, looking up\n", username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1467 msim_lookup_user(session, username, NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1468 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1469
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1470 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1471 msim_msg_list_free(list);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1472
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1473 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1474 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1475
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1476 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1477 * Handle an incoming instant message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1478 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1479 * @param session The session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1480 * @param msg Message from the server, containing 'f' (userid from) and 'msg'.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1481 * Should also contain username in _username from preprocessing.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1482 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1483 * @return TRUE if successful.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1484 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1485 static gboolean
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1486 msim_incoming_im(MsimSession *session, MsimMessage *msg, const gchar *username)
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1487 {
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1488 gchar *msg_msim_markup, *msg_purple_markup;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1489 gchar *userid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1490 time_t time_received;
34637
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1491 PurpleIMConversation *im;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1492
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1493 /* I know this isn't really a string... but we need it to be one for
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
1494 * purple_conversations_find_with_account(). */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1495 userid = msim_msg_get_string(msg, "f");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1496
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1497 purple_debug_info("msim_incoming_im", "UserID is %s", userid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1498
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1499 if (msim_is_userid(username)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1500 purple_debug_info("msim", "Ignoring message from spambot (%s) on account %s\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1501 username, purple_account_get_username(session->account));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1502 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1503 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1504
34637
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1505 /* See if an IM with their UID already exists...*/
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1506 im = purple_conversations_find_im_with_account(userid, session->account);
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1507 if (im) {
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1508 /* Since the IM exists... We need to normalize it */
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1509 purple_conversation_set_name(PURPLE_CONVERSATION(im), username);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1510 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1511
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1512 msg_msim_markup = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1513 g_return_val_if_fail(msg_msim_markup != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1514
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1515 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1516 g_free(msg_msim_markup);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1517
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1518 time_received = msim_msg_get_integer(msg, "date");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1519 if (!time_received) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1520 purple_debug_info("msim_incoming_im", "date in message not set.\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1521 time_received = time(NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1522 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1523
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1524 serv_got_im(session->gc, username, msg_purple_markup, PURPLE_MESSAGE_RECV, time_received);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1525
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1526 g_free(msg_purple_markup);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1527
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1528 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1529 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1530
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1531 /**
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1532 * Handle an incoming action message or an IM.
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1533 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1534 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1535 * @param msg
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1536 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1537 * @return TRUE if successful.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1538 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1539 static gboolean
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1540 msim_incoming_action_or_im(MsimSession *session, MsimMessage *msg)
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1541 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1542 gchar *msg_text, *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1543 gboolean rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1544
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1545 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1546
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1547 msg_text = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1548 g_return_val_if_fail(msg_text != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1549
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1550 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1551 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1552
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1553 purple_debug_info("msim",
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1554 "msim_incoming_action_or_im: action <%s> from <%s>\n",
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1555 msg_text, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1556
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1557 if (g_str_equal(msg_text, "%typing%")) {
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34640
diff changeset
1558 serv_got_typing(session->gc, username, 0, PURPLE_IM_TYPING);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1559 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1560 } else if (g_str_equal(msg_text, "%stoptyping%")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1561 serv_got_typing_stopped(session->gc, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1562 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1563 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1564 rc = msim_incoming_zap(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1565 } else if (strstr(msg_text, "!!!GroupCount=")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1566 /* TODO: support group chats. I think the number in msg_text has
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1567 * something to do with the 'gid' field. */
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1568 purple_debug_info("msim",
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1569 "msim_incoming_action_or_im: "
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1570 "TODO: implement #4691, group chats: %s\n", msg_text);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1571
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1572 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1573 } else if (strstr(msg_text, "!!!Offline=")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1574 /* TODO: support group chats. This one might mean a user
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1575 * went offline or exited the chat. */
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1576 purple_debug_info("msim", "msim_incoming_action_or_im: "
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1577 "TODO: implement #4691, group chats: %s\n", msg_text);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1578
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1579 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1580 } else if (msim_msg_get_integer(msg, "aid") != 0) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1581 purple_debug_info("msim", "TODO: implement #4691, group chat from %d on %d: %s\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1582 msim_msg_get_integer(msg, "aid"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1583 msim_msg_get_integer(msg, "f"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1584 msg_text);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1585
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1586 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1587 } else {
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1588 rc = msim_incoming_im(session, msg, username);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1589 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1590
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1591 g_free(msg_text);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1592 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1593
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1594 return rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1595 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1596
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1597 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1598 * Process an incoming media (message background?) message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1599 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1600 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1601 msim_incoming_media(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1602 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1603 gchar *username, *text;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1604
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1605 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1606 text = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1607
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1608 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1609 g_return_val_if_fail(text != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1610
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1611 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1612
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1613 /* Media messages are sent when the user opens a window to someone.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1614 * Tell libpurple they started typing and stopped typing, to inform the Psychic
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1615 * Mode plugin so it too can open a window to the user. */
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34640
diff changeset
1616 serv_got_typing(session->gc, username, 0, PURPLE_IM_TYPING);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1617 serv_got_typing_stopped(session->gc, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1618
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1619 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1620
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1621 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1622 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1623
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1624 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1625 * Process an incoming "unofficial client" message. The plugin for
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1626 * Miranda IM sends this message with the plugin information.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1627 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1628 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1629 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1630 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1631 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1632 gchar *username, *client_info;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1633
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1634 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1635 client_info = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1636
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1637 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1638 g_return_val_if_fail(client_info != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1639
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1640 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1641 username, client_info);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1642
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1643 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1644
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1645 g_return_val_if_fail(user != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1646
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1647 if (user->client_info) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1648 g_free(user->client_info);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1649 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1650 user->client_info = client_info;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1651
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1652 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1653 /* Do not free client_info - the MsimUser now owns it. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1654
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1655 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1656 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1657
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1658 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1659 * Handle an incoming buddy message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1660 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1661 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1662 msim_incoming_bm(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1663 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1664 guint bm;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1665
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1666 bm = msim_msg_get_integer(msg, "bm");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1667
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1668 msim_incoming_bm_record_cv(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1669
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1670 switch (bm) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1671 case MSIM_BM_STATUS:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1672 return msim_incoming_status(session, msg);
27377
fdb28b8d9ef4 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
1673 case MSIM_BM_ACTION_OR_IM_DELAYABLE:
fdb28b8d9ef4 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
1674 case MSIM_BM_ACTION_OR_IM_INSTANT:
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1675 return msim_incoming_action_or_im(session, msg);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1676 case MSIM_BM_MEDIA:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1677 return msim_incoming_media(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1678 case MSIM_BM_UNOFFICIAL_CLIENT:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1679 return msim_incoming_unofficial_client(session, msg);
28181
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1680 case MSIM_BM_STATUS_MOOD:
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1681 return msim_incoming_status_mood(session, msg);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1682 default:
28165
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1683 /*
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1684 * Unknown message type! We used to call
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1685 * msim_incoming_action_or_im(session, msg);
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1686 * for these, but that doesn't help anything, and it means
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1687 * we'll show broken gibberish if MySpace starts sending us
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1688 * other message types.
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1689 */
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1690 purple_debug_warning("myspace", "Received unknown imcoming "
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1691 "message, bm=%u\n", bm);
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1692 return TRUE;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1693 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1694 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1695
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1696 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1697 * Process the initial server information from the server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1698 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1699 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1700 msim_process_server_info(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1701 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1702 MsimMessage *body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1703
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1704 body = msim_msg_get_dictionary(msg, "body");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1705 g_return_val_if_fail(body != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1706
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1707 /* Example body:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1708 AdUnitRefreshInterval=10.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1709 AlertPollInterval=360.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1710 AllowChatRoomEmoticonSharing=False.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1711 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1712 CurClientVersion=673.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1713 EnableIMBrowse=True.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1714 EnableIMStuffAvatars=False.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1715 EnableIMStuffZaps=False.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1716 MaxAddAllFriends=100.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1717 MaxContacts=1000.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1718 MinClientVersion=594.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1719 MySpaceIM_ENGLISH=78744676.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1720 MySpaceNowTimer=720.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1721 PersistenceDataTimeout=900.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1722 UseWebChallenge=1.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1723 WebTicketGoHome=False
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1724
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1725 Anything useful? TODO: use what is useful, and use it.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1726 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1727 purple_debug_info("msim_process_server_info",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1728 "maximum contacts: %d\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1729 msim_msg_get_integer(body, "MaxContacts"));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1730
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1731 session->server_info = body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1732 /* session->server_info freed in msim_session_destroy */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1733
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1734 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1735 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1736
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1737 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1738 * Process a web challenge, used to login to the web site.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1739 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1740 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1741 msim_web_challenge(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1742 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1743 /* TODO: web challenge, store token. #2659. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1744 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1745 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1746
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1747 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1748 * Process a persistance message reply from the server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1749 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1750 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1751 * @param msg Message reply from server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1752 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1753 * @return TRUE if successful.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1754 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1755 * msim_lookup_user sets callback for here
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1756 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1757 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1758 msim_process_reply(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1759 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1760 MSIM_USER_LOOKUP_CB cb;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1761 gpointer data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1762 guint rid, cmd, dsn, lid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1763
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1764 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1765
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1766 msim_store_user_info(session, msg, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1767
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1768 rid = msim_msg_get_integer(msg, "rid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1769 cmd = msim_msg_get_integer(msg, "cmd");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1770 dsn = msim_msg_get_integer(msg, "dsn");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1771 lid = msim_msg_get_integer(msg, "lid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1772
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1773 /* Unsolicited messages */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1774 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1775 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1776 return msim_process_server_info(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1777 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1778 return msim_web_challenge(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1779 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1780 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1781
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1782 /* If a callback is registered for this userid lookup, call it. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1783 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1784 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1785
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1786 if (cb) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1787 purple_debug_info("msim", "msim_process_reply: calling callback now\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1788 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
1789 cb(session, msg, data);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1790 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1791 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1792 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1793 purple_debug_info("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1794 "msim_process_reply: no callback for rid %d\n", rid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1795 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1796
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1797 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1798 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1799
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1800 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1801 * Handle an error from the server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1802 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1803 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1804 * @param msg The message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1805 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1806 * @return TRUE if successfully reported error.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1807 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1808 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1809 msim_error(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1810 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1811 gchar *errmsg, *full_errmsg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1812 guint err;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1813
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1814 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1815
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1816 err = msim_msg_get_integer(msg, "err");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1817 errmsg = msim_msg_get_string(msg, "errmsg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1818
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1819 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1820 errmsg ? errmsg : "no 'errmsg' given");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1821
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1822 g_free(errmsg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1823
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1824 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1825 session->sesskey, full_errmsg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1826
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1827 /* Destroy session if fatal. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1828 if (msim_msg_get(msg, "fatal")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1829 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1830 purple_debug_info("msim", "fatal error, closing\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1831
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1832 switch (err) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1833 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1834 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1835 if (!purple_account_get_remember_password(session->account))
34029
059c1270db1f Remove the silly destroy argument from purple_account_set_password and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34028
diff changeset
1836 purple_account_set_password(session->account, NULL, NULL, NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1837 #ifdef MSIM_MAX_PASSWORD_LENGTH
34025
82ef910cc2be Fix myspace plugin compile.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32681
diff changeset
1838 if (purple_connection_get_password(session->gc) && (strlen(purple_connection_get_password(session->gc)) > MSIM_MAX_PASSWORD_LENGTH)) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1839 gchar *suggestion;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1840
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1841 suggestion = g_strdup_printf(_("%s Your password is "
33896
fb896f14715b win32: fix most of easy warnings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33691
diff changeset
1842 "%" G_GSIZE_FORMAT " characters, which is longer than the "
27351
a6c3b563ea3b Try to make this string a little more human, and flow better in its
Mark Doliner <markdoliner@pidgin.im>
parents: 27246
diff changeset
1843 "maximum length of %d. Please shorten your "
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1844 "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."),
27351
a6c3b563ea3b Try to make this string a little more human, and flow better in its
Mark Doliner <markdoliner@pidgin.im>
parents: 27246
diff changeset
1845 full_errmsg,
34148
62a874e41930 Merge with default
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34111 33896
diff changeset
1846 (gsize)strlen(purple_connection_get_password(session->gc)),
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1847 MSIM_MAX_PASSWORD_LENGTH);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1848
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1849 /* Replace full_errmsg. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1850 g_free(full_errmsg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1851 full_errmsg = suggestion;
27352
f67a2cedf1d5 Show a friendlier error message on myspace when your username or password
Mark Doliner <markdoliner@pidgin.im>
parents: 27351
diff changeset
1852 } else {
f67a2cedf1d5 Show a friendlier error message on myspace when your username or password
Mark Doliner <markdoliner@pidgin.im>
parents: 27351
diff changeset
1853 g_free(full_errmsg);
f67a2cedf1d5 Show a friendlier error message on myspace when your username or password
Mark Doliner <markdoliner@pidgin.im>
parents: 27351
diff changeset
1854 full_errmsg = g_strdup(_("Incorrect username or password"));
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1855 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1856 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1857 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1858 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1859 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1860 if (!purple_account_get_remember_password(session->account))
34029
059c1270db1f Remove the silly destroy argument from purple_account_set_password and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34028
diff changeset
1861 purple_account_set_password(session->account, NULL, NULL, NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1862 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1863 }
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
1864 purple_connection_error(session->gc, reason, full_errmsg);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1865 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1866 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1867 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1868
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1869 g_free(full_errmsg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1870
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1871 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1872 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1873
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1874 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1875 * Process a message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1876 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1877 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1878 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1879 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1880 * @return TRUE if successful. FALSE if processing failed.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1881 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1882 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1883 msim_process(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1884 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1885 g_return_val_if_fail(session != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1886 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1887
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1888 if (msim_msg_get_integer(msg, "lc") == 1) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1889 return msim_login_challenge(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1890 } else if (msim_msg_get_integer(msg, "lc") == 2) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1891 /* return msim_we_are_logged_on(session, msg); */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1892 if (msim_is_username_set(session, msg)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1893 return msim_we_are_logged_on(session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1894 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1895 /* No username is set... We'll wait for the callbacks to do their work */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1896 /* When they're all done, the last one will call msim_we_are_logged_on() and pick up where we left off */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1897 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1898 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1899 } else if (msim_msg_get(msg, "bm")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1900 return msim_incoming_bm(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1901 } else if (msim_msg_get(msg, "rid")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1902 return msim_process_reply(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1903 } else if (msim_msg_get(msg, "error")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1904 return msim_error(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1905 } else if (msim_msg_get(msg, "ka")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1906 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1907 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1908 msim_unrecognized(session, msg, "in msim_process");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1909 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1910 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1911 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1912
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1913 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1914 * After a uid is resolved to username, tag it with the username and submit for processing.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1915 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1916 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1917 * @param userinfo Response messsage to resolving request.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1918 * @param data MsimMessage *, the message to attach information to.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1919 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1920 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
1921 msim_incoming_resolved(MsimSession *session, const MsimMessage *userinfo,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1922 gpointer data)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1923 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1924 gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1925 MsimMessage *msg, *body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1926
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1927 g_return_if_fail(userinfo != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1928
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1929 body = msim_msg_get_dictionary(userinfo, "body");
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
1930 g_return_if_fail(body != NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1931
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1932 username = msim_msg_get_string(body, "UserName");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1933 g_return_if_fail(username != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1934 /* Note: username will be owned by 'msg' below. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1935
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1936 msg = (MsimMessage *)data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1937 g_return_if_fail(msg != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1938
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1939 /* TODO: more elegant solution than below. attach whole message? */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1940 /* Special elements name beginning with '_', we'll use internally within the
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1941 * program (did not come directly from the wire). */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1942 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, username); /* This makes 'msg' the owner of 'username' */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1943
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1944 /* TODO: attach more useful information, like ImageURL */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1945
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1946 msim_process(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1947
25324
9a07ddd8cc86 A couple of memory leak fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25240
diff changeset
1948 msim_msg_free(msg);
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
1949 msim_msg_free(body);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1950 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1951
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1952 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1953 * Preprocess incoming messages, resolving as needed, calling
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1954 * msim_process() when ready to process.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1955 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1956 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1957 * @param msg MsimMessage *, freed by caller.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1958 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1959 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1960 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1961 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1962 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1963
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1964 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1965 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1966 const gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1967
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1968 /* 'f' = userid message is from, in buddy messages */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1969 uid = msim_msg_get_integer(msg, "f");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1970
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1971 username = msim_uid2username_from_blist(session->account, uid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1972
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1973 if (username) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1974 /* Know username already, use it. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1975 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1976 username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1977 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1978 return msim_process(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1979
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1980 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1981 gchar *from;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1982
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1983 /* Send lookup request. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1984 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1985 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1986 from = msim_msg_get_string(msg, "f");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1987 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1988 g_free(from);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1989
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1990 /* indeterminate */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1991 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1992 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1993 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1994 /* Nothing to resolve - send directly to processing. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1995 return msim_process(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1996 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1997 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1998
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1999 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2000 * Callback when input available.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2001 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2002 * @param gc_uncasted A PurpleConnection pointer.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2003 * @param source File descriptor.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2004 * @param cond PURPLE_INPUT_READ
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2005 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2006 * Reads the input, and calls msim_preprocess_incoming() to handle it.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2007 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2008 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2009 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2010 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2011 PurpleConnection *gc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2012 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2013 gchar *end;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2014 int n;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2015
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2016 g_return_if_fail(gc_uncasted != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2017 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2018
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2019 gc = (PurpleConnection *)(gc_uncasted);
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2020 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2021
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2022 /* libpurple/eventloop.h only defines these two */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2023 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2024 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2025 purple_connection_error (gc,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2026 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2027 _("Invalid input condition"));
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2028 return;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2029 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2030
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2031 g_return_if_fail(cond == PURPLE_INPUT_READ);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2032
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2033 /* Mark down that we got data, so we don't timeout. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2034 session->last_comm = time(NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2035
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2036 /* If approaching end of buffer, reallocate some more memory. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2037 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2038 purple_debug_info("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2039 "msim_input_cb: %d-byte read buffer full, rxoff=%d, " "growing by %d bytes\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2040 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2041 session->rxsize += MSIM_READ_BUF_SIZE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2042 session->rxbuf = g_realloc(session->rxbuf, session->rxsize);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2043
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2044 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2045 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2046
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2047 purple_debug_info("msim", "dynamic buffer at %d (max %d), reading up to %d\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2048 session->rxoff, session->rxsize,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2049 MSIM_READ_BUF_SIZE - session->rxoff - 1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2050
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2051 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2052 * the file descriptor, but it sometimes differs from the 'source' parameter.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2053 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2054 n = recv(session->fd,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2055 session->rxbuf + session->rxoff,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2056 session->rxsize - session->rxoff - 1, 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2057
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2058 if (n < 0) {
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2059 gchar *tmp;
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2060
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2061 if (errno == EAGAIN)
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2062 /* No worries */
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2063 return;
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2064
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2065 tmp = g_strdup_printf(_("Lost connection with server: %s"),
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2066 g_strerror(errno));
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2067 purple_connection_error(gc,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2068 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2069 g_free(tmp);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2070 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2071 } else if (n == 0) {
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2072 purple_connection_error(gc,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2073 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2074 _("Server closed the connection"));
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2075 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2076 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2077
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2078 /* Null terminate */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2079 purple_debug_info("msim", "msim_input_cb: going to null terminate "
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2080 "at n=%d\n", n);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2081 session->rxbuf[session->rxoff + n] = 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2082
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2083 #ifdef MSIM_CHECK_EMBEDDED_NULLS
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2084 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2085 if (strlen(session->rxbuf + session->rxoff) != n) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2086 /* Occurs after login, but it is not a null byte. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2087 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes"
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2088 "--null byte encountered?\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2089 strlen(session->rxbuf + session->rxoff), n);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2090 /*purple_connection_error (gc,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2091 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2092 "Invalid message - null byte on input"); */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2093 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2094 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2095 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2096
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2097 session->rxoff += n;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2098 purple_debug_info("msim", "msim_input_cb: read=%d\n", n);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2099
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2100 #ifdef MSIM_DEBUG_RXBUF
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2101 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2102 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2103
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2104 /* Look for \\final\\ end markers. If found, process message. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2105 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2106 MsimMessage *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2107
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2108 #ifdef MSIM_DEBUG_RXBUF
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2109 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2110 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2111 *end = 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2112 msg = msim_parse(session->rxbuf);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2113 if (!msg) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2114 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n");
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2115 purple_connection_error (gc,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2116 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2117 _("Unable to parse message"));
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2118 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2119 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2120 /* Process message and then free it (processing function should
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2121 * clone message if it wants to keep it afterwards.) */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2122 if (!msim_preprocess_incoming(session, msg)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2123 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2124 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2125 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2126 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2127
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2128 /* Move remaining part of buffer to beginning. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2129 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2130 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2131 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2132
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2133 /* Clear end of buffer
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2134 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2135 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2136 }
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2137 }
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2138
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2139 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2140 * Callback when connected. Sets up input handlers.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2141 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2142 * @param data A PurpleConnection pointer.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2143 * @param source File descriptor.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2144 * @param error_message
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2145 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2146 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2147 msim_connect_cb(gpointer data, gint source, const gchar *error_message)
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2148 {
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2149 PurpleConnection *gc;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2150 MsimSession *session;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2151
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2152 g_return_if_fail(data != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2153
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2154 gc = (PurpleConnection *)data;
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2155 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2156
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2157 if (source < 0) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2158 gchar *tmp = g_strdup_printf(_("Unable to connect: %s"),
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2159 error_message);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2160 purple_connection_error (gc,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2161 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2162 g_free(tmp);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2163 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2164 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2165
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2166 session->fd = source;
32681
229181e35c4c Myspace: Move "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
2167 session->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2168 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2169
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2170 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2171 * Start logging in to the MSIM servers.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2172 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2173 * @param acct Account information to use to login.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2174 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2175 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2176 msim_login(PurpleAccount *acct)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2177 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2178 PurpleConnection *gc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2179 const gchar *host;
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34567
diff changeset
2180 GSList *deny;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2181 int port;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2182
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2183 g_return_if_fail(acct != NULL);
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32338
diff changeset
2184 g_return_if_fail(purple_account_get_username(acct) != NULL);
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32338
diff changeset
2185
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32338
diff changeset
2186 purple_debug_info("msim", "logging in %s\n", purple_account_get_username(acct));
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2187
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2188 gc = purple_account_get_connection(acct);
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2189 purple_connection_set_protocol_data(gc, msim_session_new(acct));
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
2190 purple_connection_set_flags(gc, PURPLE_CONNECTION_FLAG_HTML | PURPLE_CONNECTION_FLAG_NO_URLDESC);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2191
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2192 /*
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2193 * Lets wipe out our local list of blocked buddies. We'll get a
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2194 * list of all blocked buddies from the server, and we shouldn't
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2195 * have stuff in the local list that isn't on the server list.
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2196 */
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34567
diff changeset
2197 while ((deny = purple_account_privacy_get_denied(acct)) != NULL)
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34567
diff changeset
2198 purple_account_privacy_deny_remove(acct, deny->data, TRUE);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2199
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2200 /* 1. connect to server */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2201 purple_connection_update_progress(gc, _("Connecting"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2202 0, /* which connection step this is */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2203 4); /* total number of steps */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2204
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2205 host = purple_account_get_string(acct, "server", MSIM_SERVER);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2206 port = purple_account_get_int(acct, "port", MSIM_PORT);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2207
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2208 /* From purple.sf.net/api:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2209 * """Note that this function name can be misleading--although it is called
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2210 * "proxy connect," it is used for establishing any outgoing TCP connection,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2211 * whether through a proxy or not.""" */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2212
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2213 /* Calls msim_connect_cb when connected. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2214 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2215 /* TODO: try other ports if in auto mode, then save
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2216 * working port and try that first next time. */
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2217 purple_connection_error (gc,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2218 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2219 _("Unable to connect"));
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2220 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2221 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2222 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2223
29293
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2224 static void
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2225 msim_buddy_free(PurpleBuddy *buddy)
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2226 {
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2227 msim_user_free(purple_buddy_get_protocol_data(buddy));
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2228 purple_buddy_set_protocol_data(buddy, NULL);
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2229 }
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2230
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2231 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2232 * Close the connection.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2233 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2234 * @param gc The connection.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2235 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2236 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2237 msim_close(PurpleConnection *gc)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2238 {
29293
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2239 GSList *buddies;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2240 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2241
29301
31cb701e4dd9 Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <markdoliner@pidgin.im>
parents: 29299
diff changeset
2242 if (gc == NULL) {
31cb701e4dd9 Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <markdoliner@pidgin.im>
parents: 29299
diff changeset
2243 return;
31cb701e4dd9 Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <markdoliner@pidgin.im>
parents: 29299
diff changeset
2244 }
31cb701e4dd9 Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <markdoliner@pidgin.im>
parents: 29299
diff changeset
2245
29293
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2246 /*
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2247 * Free our protocol-specific buddy data. It almost seems like libpurple
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2248 * should call our buddy_free prpl callback so that we don't need to do
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2249 * this... but it doesn't, so we do.
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2250 */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
2251 buddies = purple_blist_find_buddies(purple_connection_get_account(gc), NULL);
29293
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2252 while (buddies != NULL) {
29302
31485e127d82 Paul Aurich helped me make this cleaner, because he's such a good person!
Mark Doliner <markdoliner@pidgin.im>
parents: 29301
diff changeset
2253 msim_buddy_free(buddies->data);
29293
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2254 buddies = g_slist_delete_link(buddies, buddies);
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2255 }
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2256
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2257 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2258 if (session == NULL)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2259 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2260
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2261 purple_connection_set_protocol_data(gc, NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2262
32681
229181e35c4c Myspace: Move "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
2263 if (session->inpa) {
229181e35c4c Myspace: Move "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
2264 purple_input_remove(session->inpa);
229181e35c4c Myspace: Move "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
2265 session->inpa = 0;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2266 }
25236
31398df36384 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <markdoliner@pidgin.im>
parents: 25232
diff changeset
2267 if (session->fd >= 0) {
31398df36384 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <markdoliner@pidgin.im>
parents: 25232
diff changeset
2268 close(session->fd);
31398df36384 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <markdoliner@pidgin.im>
parents: 25232
diff changeset
2269 session->fd = -1;
31398df36384 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <markdoliner@pidgin.im>
parents: 25232
diff changeset
2270 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2271
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2272 msim_session_destroy(session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2273 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2274
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2275 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2276 * Schedule an IM to be sent once the user ID is looked up.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2277 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2278 * @param gc Connection.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2279 * @param who A user id, email, or username to send the message to.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2280 * @param message Instant message text to send.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2281 * @param flags Flags.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2282 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2283 * @return 1 if successful or postponed, -1 if failed
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2284 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2285 * Allows sending to a user by username, email address, or userid. If
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2286 * a username or email address is given, the userid must be looked up.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2287 * This function does that by calling msim_postprocess_outgoing().
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2288 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2289 static int
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2290 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2291 PurpleMessageFlags flags)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2292 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2293 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2294 gchar *message_msim;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2295 int rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2296
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2297 g_return_val_if_fail(gc != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2298 g_return_val_if_fail(who != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2299 g_return_val_if_fail(message != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2300
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2301 /* 'flags' has many options, not used here. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2302
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2303 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2304
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2305 message_msim = html_to_msim_markup(session, message);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2306
27377
fdb28b8d9ef4 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
2307 if (msim_send_bm(session, who, message_msim, MSIM_BM_ACTION_OR_IM_DELAYABLE)) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2308 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2309 * return 1 even if the message could not be sent, since I don't know if
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2310 * it has failed yet--because the IM is only sent after the userid is
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2311 * retrieved from the server (which happens after this function returns).
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2312 * If an error does occur, it should be logged to the IM window.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2313 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2314 rc = 1;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2315 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2316 rc = -1;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2317 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2318
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2319 g_free(message_msim);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2320
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2321 return rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2322 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2323
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2324 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2325 * Handle when our user starts or stops typing to another user.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2326 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2327 * @param gc
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2328 * @param name The buddy name to which our user is typing to
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34640
diff changeset
2329 * @param state PURPLE_IM_TYPING, PURPLE_IM_TYPED, PURPLE_IM_NOT_TYPING
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2330 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2331 * @return 0
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2332 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2333 static unsigned int
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2334 msim_send_typing(PurpleConnection *gc, const gchar *name,
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34640
diff changeset
2335 PurpleIMTypingState state)
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2336 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2337 const gchar *typing_str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2338 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2339
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2340 g_return_val_if_fail(gc != NULL, 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2341 g_return_val_if_fail(name != NULL, 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2342
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2343 session = purple_connection_get_protocol_data(gc);
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2344
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2345 switch (state) {
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34640
diff changeset
2346 case PURPLE_IM_TYPING:
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2347 typing_str = "%typing%";
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2348 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2349
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34640
diff changeset
2350 case PURPLE_IM_TYPED:
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34640
diff changeset
2351 case PURPLE_IM_NOT_TYPING:
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2352 default:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2353 typing_str = "%stoptyping%";
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2354 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2355 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2356
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2357 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str);
27377
fdb28b8d9ef4 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
2358 msim_send_bm(session, name, typing_str, MSIM_BM_ACTION_OR_IM_INSTANT);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2359 return 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2360 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2361
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2362 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2363 * Callback for msim_get_info(), for when user info is received.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2364 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2365 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
2366 msim_get_info_cb(MsimSession *session, const MsimMessage *user_info_msg,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2367 gpointer data)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2368 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2369 MsimMessage *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2370 gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2371 PurpleNotifyUserInfo *user_info;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2372 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2373
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2374 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2375 orthogonality. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2376 msg = (MsimMessage *)data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2377 g_return_if_fail(msg != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2378
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2379 username = msim_msg_get_string(msg, "user");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2380 if (!username) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2381 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2382 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2383 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2384
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2385 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2386 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2387
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2388 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2389
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2390 if (!user) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2391 /* User isn't on blist, create a temporary user to store info. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2392 user = g_new0(MsimUser, 1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2393 user->temporary_user = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2394 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2395
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2396 /* Update user structure with new information */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2397 msim_store_user_info(session, user_info_msg, user);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2398
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2399 user_info = purple_notify_user_info_new();
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2400
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2401 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2402 msim_append_user_info(session, user_info, user, TRUE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2403
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2404 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2405 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2406
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2407 purple_notify_user_info_destroy(user_info);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2408
29207
dcf281b384d2 Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <markdoliner@pidgin.im>
parents: 28181
diff changeset
2409 if (user->temporary_user)
dcf281b384d2 Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <markdoliner@pidgin.im>
parents: 28181
diff changeset
2410 msim_user_free(user);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2411 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2412 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2413
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2414 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2415 * Retrieve a user's profile.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2416 * @param username Username, user ID, or email address to lookup.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2417 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2418 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2419 msim_get_info(PurpleConnection *gc, const gchar *username)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2420 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2421 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2422 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2423 gchar *user_to_lookup;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2424 MsimMessage *user_msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2425
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2426 g_return_if_fail(gc != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2427 g_return_if_fail(username != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2428
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2429 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2430
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2431 /* Obtain uid of buddy. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2432 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2433
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2434 /* If is on buddy list, lookup by uid since it is faster. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2435 if (user && user->id) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2436 user_to_lookup = g_strdup_printf("%d", user->id);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2437 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2438 /* Looking up buddy not on blist. Lookup by whatever user entered. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2439 user_to_lookup = g_strdup(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2440 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2441
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2442 /* Pass the username to msim_get_info_cb(), because since we lookup
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2443 * by userid, the userinfo message will only contain the uid (not
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2444 * the username) but it would be useful to display the username too.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2445 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2446 user_msg = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2447 "user", MSIM_TYPE_STRING, g_strdup(username),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2448 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2449 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2450
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2451 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2452
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2453 g_free(user_to_lookup);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2454 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2455
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2456 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2457 * Set status using an MSIM_STATUS_CODE_* value.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2458 * @param status_code An MSIM_STATUS_CODE_* value.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2459 * @param statstring Status string, must be a dynamic string (will be freed by msim_send).
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2460 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2461 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2462 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2463 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2464 g_return_if_fail(statstring != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2465
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2466 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2467 status_code, statstring);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2468
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2469 if (!msim_send(session,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2470 "status", MSIM_TYPE_INTEGER, status_code,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2471 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2472 "statstring", MSIM_TYPE_STRING, statstring,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2473 "locstring", MSIM_TYPE_STRING, g_strdup(""),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2474 NULL))
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2475 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2476 purple_debug_info("msim", "msim_set_status: failed to set status\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2477 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2478 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2479
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2480 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2481 * Set your status - callback for when user manually sets it.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2482 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2483 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2484 msim_set_status(PurpleAccount *account, PurpleStatus *status)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2485 {
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2486 PurpleConnection *gc = purple_account_get_connection(account);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2487 PurpleStatusType *type;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2488 PurplePresence *pres;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2489 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2490 guint status_code;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2491 const gchar *message;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2492 gchar *stripped;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2493 gchar *unrecognized_msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2494
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2495 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2496
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2497 type = purple_status_get_type(status);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2498 pres = purple_status_get_presence(status);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2499
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2500 switch (purple_status_type_get_primitive(type)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2501 case PURPLE_STATUS_AVAILABLE:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2502 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2503 MSIM_STATUS_CODE_ONLINE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2504 status_code = MSIM_STATUS_CODE_ONLINE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2505 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2506
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2507 case PURPLE_STATUS_INVISIBLE:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2508 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2509 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2510 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2511 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2512
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2513 case PURPLE_STATUS_AWAY:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2514 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2515 MSIM_STATUS_CODE_AWAY);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2516 status_code = MSIM_STATUS_CODE_AWAY;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2517 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2518
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2519 default:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2520 purple_debug_info("msim", "msim_set_status: unknown "
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2521 "status interpreting as online");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2522 status_code = MSIM_STATUS_CODE_ONLINE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2523
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2524 unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2525 purple_status_type_get_primitive(type));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2526 msim_unrecognized(session, NULL, unrecognized_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2527 g_free(unrecognized_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2528
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2529 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2530 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2531
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2532 message = purple_status_get_attr_string(status, "message");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2533
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2534 /* Status strings are plain text. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2535 if (message != NULL)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2536 stripped = purple_markup_strip_html(message);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2537 else
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2538 stripped = g_strdup("");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2539
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2540 msim_set_status_code(session, status_code, stripped);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2541
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2542 /* If we should be idle, set that status. Time is irrelevant here. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2543 if (purple_presence_is_idle(pres) && status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN)
32624
f957ad287bcc Convert code to use the purple_account accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
2544 msim_set_idle(purple_account_get_connection(account), 1);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2545 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2546
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2547 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2548 * Go idle.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2549 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2550 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2551 msim_set_idle(PurpleConnection *gc, int time)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2552 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2553 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2554 PurpleStatus *status;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2555
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2556 g_return_if_fail(gc != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2557
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2558 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2559
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2560 status = purple_account_get_active_status(session->account);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2561
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2562 if (time == 0) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2563 /* Going back from idle. In msim, idle is mutually exclusive
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2564 * from the other states (you can only be away or idle, but not
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2565 * both, for example), so by going non-idle I go back to what
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2566 * libpurple says I should be.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2567 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2568 msim_set_status(session->account, status);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2569 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2570 const gchar *message;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2571 gchar *stripped;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2572
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2573 /* Set the idle message to the status message from the real
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2574 * current status.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2575 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2576 message = purple_status_get_attr_string(status, "message");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2577 if (message != NULL)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2578 stripped = purple_markup_strip_html(message);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2579 else
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2580 stripped = g_strdup("");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2581
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2582 /* msim doesn't support idle time, so just go idle */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2583 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2584 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2585 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2586
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2587 /**
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2588 * @return TRUE if everything was ok, FALSE if something went awry.
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2589 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2590 static gboolean
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2591 msim_update_blocklist_for_buddy(MsimSession *session, const char *name, gboolean allow, gboolean block)
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2592 {
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2593 MsimMessage *msg;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2594 GList *list;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2595
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2596 list = NULL;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2597 list = g_list_prepend(list, allow ? "a+" : "a-");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2598 list = g_list_prepend(list, "<uid>");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2599 list = g_list_prepend(list, block ? "b+" : "b-");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2600 list = g_list_prepend(list, "<uid>");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2601 list = g_list_reverse(list);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2602
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2603 msg = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2604 "blocklist", MSIM_TYPE_BOOLEAN, TRUE,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2605 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2606 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2607 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2608 "idlist", MSIM_TYPE_LIST, list,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2609 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2610
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2611 if (!msim_postprocess_outgoing(session, msg, name, "idlist", NULL)) {
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2612 purple_debug_error("myspace",
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2613 "blocklist command failed for %s, allow=%d, block=%d\n",
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2614 name, allow, block);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2615 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2616 return FALSE;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2617 }
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2618
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2619 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2620
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2621 return TRUE;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2622 }
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2623
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2624 /**
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2625 * Add a buddy to user's buddy list.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2626 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2627 static void
32315
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32262
diff changeset
2628 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group, const char *message)
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2629 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2630 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2631 MsimMessage *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2632 MsimMessage *msg_persist;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2633 MsimMessage *body;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2634 const char *name, *gname;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2635
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2636 session = purple_connection_get_protocol_data(gc);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2637 name = purple_buddy_get_name(buddy);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2638 gname = group ? purple_group_get_name(group) : NULL;
24867
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24693
diff changeset
2639
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24693
diff changeset
2640 if (msim_get_user_from_buddy(buddy, FALSE) != NULL)
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24693
diff changeset
2641 return;
69105eeaf010 The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <darkrain42@pidgin.im>
parents: 24693
diff changeset
2642
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2643 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n",
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2644 name, gname ? gname : "(no group)");
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2645
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2646 msg = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2647 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2648 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2649 /* "newprofileid" will be inserted here with uid. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2650 "reason", MSIM_TYPE_STRING, g_strdup(""),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2651 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2652
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2653 if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2654 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed."));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2655 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2656 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2657 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2658 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2659
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2660 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2661 * buddy list since Purple adds it locally. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2662
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2663 body = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2664 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2665 "GroupName", MSIM_TYPE_STRING, g_strdup(gname),
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2666 "Position", MSIM_TYPE_INTEGER, 1000,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2667 "Visibility", MSIM_TYPE_INTEGER, 1,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2668 "NickName", MSIM_TYPE_STRING, g_strdup(""),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2669 "NameSelect", MSIM_TYPE_INTEGER, 0,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2670 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2671
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2672 /* TODO: Update blocklist. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2673
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2674 msg_persist = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2675 "persist", MSIM_TYPE_INTEGER, 1,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2676 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2677 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2678 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2679 "uid", MSIM_TYPE_INTEGER, session->userid,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2680 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2681 /* TODO: Use msim_new_reply_callback to get rid. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2682 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2683 "body", MSIM_TYPE_DICTIONARY, body,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2684 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2685
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2686 if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL))
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2687 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2688 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed"));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2689 msim_msg_free(msg_persist);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2690 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2691 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2692 msim_msg_free(msg_persist);
25214
52b9d9d62896 Fix a bug where if "Show our presence only to people on our buddy list"
Mark Doliner <markdoliner@pidgin.im>
parents: 25213
diff changeset
2693
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2694 /* Add to allow list, remove from block list */
25851
f7c0c2664f90 explicit merge of 'f77367f1e87c0098d93902d6982b44f75c1ecacb'
Richard Laager <rlaager@pidgin.im>
parents: 25237 25850
diff changeset
2695 msim_update_blocklist_for_buddy(session, name, TRUE, FALSE);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2696 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2697
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2698 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2699 * Remove a buddy from the user's buddy list.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2700 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2701 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2702 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2703 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2704 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2705 MsimMessage *delbuddy_msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2706 MsimMessage *persist_msg;
25850
fe954492a9f6 explicit merge of '52b9d9d628964c2d5aa6df8ba17852596e05d24a'
Richard Laager <rlaager@pidgin.im>
parents: 25849 25214
diff changeset
2707 const char *name;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2708
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2709 session = purple_connection_get_protocol_data(gc);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2710 name = purple_buddy_get_name(buddy);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2711
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2712 delbuddy_msg = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2713 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2714 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2715 /* 'delprofileid' with uid will be inserted here. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2716 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2717
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2718 if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2719 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed"));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2720 msim_msg_free(delbuddy_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2721 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2722 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2723 msim_msg_free(delbuddy_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2724
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2725 persist_msg = msim_msg_new(
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2726 "persist", MSIM_TYPE_INTEGER, 1,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2727 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2728 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2729 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2730 "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID,
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2731 "uid", MSIM_TYPE_INTEGER, session->userid,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2732 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2733 /* <uid> will be replaced by postprocessing */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2734 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2735 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2736
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2737 if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2738 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed"));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2739 msim_msg_free(persist_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2740 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2741 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2742 msim_msg_free(persist_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2743
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2744 /*
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2745 * Remove from our approve list and from our block list (this
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2746 * doesn't seem like it would be necessary, but the official client
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2747 * does it)
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2748 */
25856
0cf2cea5048d Compile!
Richard Laager <rlaager@pidgin.im>
parents: 25855
diff changeset
2749 if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) {
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2750 purple_notify_error(NULL, NULL,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2751 _("Failed to remove buddy"), _("blocklist command failed"));
25324
9a07ddd8cc86 A couple of memory leak fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25240
diff changeset
2752 return;
9a07ddd8cc86 A couple of memory leak fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25240
diff changeset
2753 }
25855
f2aac5656e7d propagate from branch 'im.pidgin.pidgin' (head f1039393e25a933ea6730a935d0107ed4c78db7c)
Richard Laager <rlaager@pidgin.im>
parents: 25852 25324
diff changeset
2754 msim_buddy_free(buddy);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2755 }
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2756
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2757 /**
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2758 * Remove a buddy from the user's buddy list and add them to the block list.
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2759 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2760 static void
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2761 msim_add_deny(PurpleConnection *gc, const char *name)
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2762 {
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2763 MsimSession *session;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2764 MsimMessage *msg, *body;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2765
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2766 session = purple_connection_get_protocol_data(gc);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2767
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2768 /* Remove from buddy list */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2769 msg = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2770 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2771 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2772 /* 'delprofileid' with uid will be inserted here. */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2773 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2774 if (!msim_postprocess_outgoing(session, msg, name, "delprofileid", NULL))
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2775 purple_debug_error("myspace", "delbuddy command failed\n");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2776 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2777
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2778 /* Remove from our approve list and add to our block list */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2779 msim_update_blocklist_for_buddy(session, name, FALSE, TRUE);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2780
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2781 /*
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2782 * Add the buddy to our list of blocked contacts, so we know they
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2783 * are blocked if we log in with another client
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2784 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2785 body = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2786 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2787 "Visibility", MSIM_TYPE_INTEGER, 2,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2788 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2789 msg = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2790 "persist", MSIM_TYPE_INTEGER, 1,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2791 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2792 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2793 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2794 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2795 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2796 "body", MSIM_TYPE_DICTIONARY, body,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2797 NULL);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2798 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL))
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2799 purple_debug_error("myspace", "add to block list command failed\n");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2800 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2801
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2802 /*
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2803 * TODO: MySpace doesn't allow blocked buddies on our buddy list,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2804 * do they? If not then we need to remove the buddy from
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2805 * libpurple's buddy list.
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2806 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2807 }
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2808
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2809 /**
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2810 * Remove a buddy from the user's block list.
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2811 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2812 static void
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2813 msim_rem_deny(PurpleConnection *gc, const char *name)
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2814 {
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2815 MsimSession *session;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2816 MsimMessage *msg, *body;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2817
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2818 session = purple_connection_get_protocol_data(gc);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2819
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2820 /*
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2821 * Remove from our list of blocked contacts, so we know they
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2822 * are no longer blocked if we log in with another client
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2823 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2824 body = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2825 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2826 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2827 msg = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2828 "persist", MSIM_TYPE_INTEGER, 1,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2829 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2830 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2831 "dsn", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_DSN,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2832 "lid", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_LID,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2833 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2834 "body", MSIM_TYPE_DICTIONARY, body,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2835 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2836 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL))
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2837 purple_debug_error("myspace", "remove from block list command failed\n");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2838 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2839
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2840 /* Remove from our approve list and our block list */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2841 msim_update_blocklist_for_buddy(session, name, FALSE, FALSE);
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2842 }
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2843
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2844 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2845 * Returns a string of a username in canonical form. Basically removes all the
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2846 * spaces, lowercases the string, and looks up user IDs to usernames.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2847 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2848 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2849 * Borrowed this code from oscar_normalize. Added checking for
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2850 * "if userid, get name before normalizing"
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2851 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2852 static const char *msim_normalize(const PurpleAccount *account, const char *str) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2853 static char normalized[BUF_LEN];
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2854 char *tmp1, *tmp2;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2855 int i, j;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2856 guint id;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2857
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2858 g_return_val_if_fail(str != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2859
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2860 if (msim_is_userid(str)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2861 /* Have user ID, we need to get their username first :) */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2862 const char *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2863
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2864 /* If the account does not exist, we can't look up the user. */
32624
f957ad287bcc Convert code to use the purple_account accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
2865 if (!account || !purple_account_get_connection(account))
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2866 return str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2867
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2868 id = atol(str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2869 username = msim_uid2username_from_blist((PurpleAccount *)account, id);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2870 if (!username) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2871 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2872 /* Note: manual lookup using msim_lookup_user() is a problem inside
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2873 * msim_normalize(), because msim_lookup_user() calls a callback function
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2874 * when the user information has been looked up, but msim_normalize() expects
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2875 * the result immediately. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2876 strncpy(normalized, str, BUF_LEN);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2877 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2878 strncpy(normalized, username, BUF_LEN);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2879 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2880 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2881 /* Have username. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2882 strncpy(normalized, str, BUF_LEN);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2883 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2884
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2885 /* Strip spaces. */
25355
c027c4bb9ebe Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25324
diff changeset
2886 for (i=0, j=0; normalized[j]; j++) {
c027c4bb9ebe Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25324
diff changeset
2887 if (normalized[j] != ' ')
c027c4bb9ebe Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25324
diff changeset
2888 normalized[i++] = normalized[j];
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2889 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2890 normalized[i] = '\0';
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2891
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2892 /* Lowercase and perform UTF-8 normalization. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2893 tmp1 = g_utf8_strdown(normalized, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2894 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2895 g_snprintf(normalized, sizeof(normalized), "%s", tmp2);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2896 g_free(tmp2);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2897 g_free(tmp1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2898
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2899 /* TODO: re-add caps and spacing back to what the user wanted.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2900 * User can format their own names, for example 'msimprpl' is shown
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2901 * as 'MsIm PrPl' in the official client.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2902 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2903 * TODO: file a ticket to add this enhancement.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2904 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2905
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2906 return normalized;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2907 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2908
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2909 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2910 * Return whether the buddy can be messaged while offline.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2911 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2912 * The protocol supports offline messages in just the same way as online
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2913 * messages.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2914 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2915 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2916 msim_offline_message(const PurpleBuddy *buddy)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2917 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2918 return TRUE;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2919 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2920
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2921 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2922 * Send raw data to the server, possibly with embedded NULs.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2923 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2924 * Used in prpl_info struct, so that plugins can have the most possible
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2925 * control of what is sent over the connection. Inside this prpl,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2926 * msim_send_raw() is used, since it sends NUL-terminated strings (easier).
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2927 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2928 * @param gc PurpleConnection
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2929 * @param buf Buffer to send
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2930 * @param total_bytes Size of buffer to send
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2931 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2932 * @return Bytes successfully sent, or -1 on error.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2933 */
25209
595d119881ab Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <markdoliner@pidgin.im>
parents: 25207
diff changeset
2934 /*
595d119881ab Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <markdoliner@pidgin.im>
parents: 25207
diff changeset
2935 * TODO: This needs to do non-blocking writes and use a watcher to check
595d119881ab Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <markdoliner@pidgin.im>
parents: 25207
diff changeset
2936 * when the fd is available to be written to.
595d119881ab Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <markdoliner@pidgin.im>
parents: 25207
diff changeset
2937 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2938 static int
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2939 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2940 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2941 int total_bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2942 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2943
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2944 g_return_val_if_fail(gc != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2945 g_return_val_if_fail(buf != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2946 g_return_val_if_fail(total_bytes >= 0, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2947
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
2948 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2949
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2950 /* Loop until all data is sent, or a failure occurs. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2951 total_bytes_sent = 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2952 do {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2953 int bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2954
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2955 bytes_sent = send(session->fd, buf + total_bytes_sent,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2956 total_bytes - total_bytes_sent, 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2957
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2958 if (bytes_sent < 0) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2959 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2960 buf, g_strerror(errno));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2961 return total_bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2962 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2963 total_bytes_sent += bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2964
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2965 } while(total_bytes_sent < total_bytes);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2966
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2967 return total_bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2968 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2969
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2970 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2971 * Send raw data (given as a NUL-terminated string) to the server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2972 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2973 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2974 * @param msg The raw data to send, in a NUL-terminated string.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2975 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2976 * @return TRUE if succeeded, FALSE if not.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2977 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2978 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2979 gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2980 msim_send_raw(MsimSession *session, const gchar *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2981 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2982 size_t len;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2983
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2984 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2985
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2986 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2987 len = strlen(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2988
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2989 return msim_send_really_raw(session->gc, msg, len) == len;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2990 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2991
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2992 static GHashTable *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2993 msim_get_account_text_table(PurpleAccount *unused)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2994 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2995 GHashTable *table;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2996
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2997 table = g_hash_table_new(g_str_hash, g_str_equal);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2998
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2999 g_hash_table_insert(table, "login_label", (gpointer)_("Email Address..."));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3000
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3001 return table;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3002 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3003
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3004 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3005 * Callbacks called by Purple, to access this plugin.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3006 */
20319
0808612cefa9 static this.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19958
diff changeset
3007 static PurplePluginProtocolInfo prpl_info = {
32316
21dab55b4699 Move struct_size to the beginning of the struct. Even if we don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32315
diff changeset
3008 sizeof(PurplePluginProtocolInfo), /* struct_size */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3009 /* options */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3010 OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3011 | OPT_PROTO_MAIL_CHECK,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3012
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3013 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3014 NULL, /* user_splits */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3015 NULL, /* protocol_options */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3016 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3017 msim_list_icon, /* list_icon */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3018 NULL, /* list_emblems */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3019 msim_status_text, /* status_text */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3020 msim_tooltip_text, /* tooltip_text */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3021 msim_status_types, /* status_types */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3022 msim_blist_node_menu, /* blist_node_menu */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3023 NULL, /* chat_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3024 NULL, /* chat_info_defaults */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3025 msim_login, /* login */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3026 msim_close, /* close */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3027 msim_send_im, /* send_im */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3028 NULL, /* set_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3029 msim_send_typing, /* send_typing */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3030 msim_get_info, /* get_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3031 msim_set_status, /* set_status */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3032 msim_set_idle, /* set_idle */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3033 NULL, /* change_passwd */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3034 msim_add_buddy, /* add_buddy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3035 NULL, /* add_buddies */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3036 msim_remove_buddy, /* remove_buddy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3037 NULL, /* remove_buddies */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3038 NULL, /* add_permit */
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
3039 msim_add_deny, /* add_deny */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3040 NULL, /* rem_permit */
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
3041 msim_rem_deny, /* rem_deny */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3042 NULL, /* set_permit_deny */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3043 NULL, /* join_chat */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3044 NULL, /* reject chat invite */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3045 NULL, /* get_chat_name */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3046 NULL, /* chat_invite */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3047 NULL, /* chat_leave */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3048 NULL, /* chat_whisper */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3049 NULL, /* chat_send */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3050 NULL, /* keepalive */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3051 NULL, /* register_user */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3052 NULL, /* get_cb_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3053 NULL, /* alias_buddy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3054 NULL, /* group_buddy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3055 NULL, /* rename_group */
25324
9a07ddd8cc86 A couple of memory leak fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25240
diff changeset
3056 msim_buddy_free, /* buddy_free */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3057 NULL, /* convo_closed */
22215
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
3058 msim_normalize, /* normalize */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3059 NULL, /* set_buddy_icon */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3060 NULL, /* remove_group */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3061 NULL, /* get_cb_real_name */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3062 NULL, /* set_chat_topic */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3063 NULL, /* find_blist_chat */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3064 NULL, /* roomlist_get_list */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3065 NULL, /* roomlist_cancel */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3066 NULL, /* roomlist_expand_category */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3067 NULL, /* can_receive_file */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3068 NULL, /* send_file */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3069 NULL, /* new_xfer */
19506
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3070 msim_offline_message, /* offline_message */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3071 NULL, /* whiteboard_prpl_ops */
19506
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3072 msim_send_really_raw, /* send_raw */
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3073 NULL, /* roomlist_room_serialize */
19912
1aa572649c3f Fix up an apparently bad merge with the reserved fields here.
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
3074 NULL, /* unregister_user */
19506
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3075 msim_send_attention, /* send_attention */
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3076 msim_attention_types, /* attention_types */
23277
ea315a8d5bad Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23276
diff changeset
3077 msim_get_account_text_table, /* get_account_text_table */
26186
18143bdefcd4 propagate from branch 'im.pidgin.pidgin' (head 0b3825b8b06bb45b93f5a5af54a3653c3b5eee7f)
Michael Ruprecht <maiku@pidgin.im>
parents: 26178 25324
diff changeset
3078 NULL, /* initiate_media */
29757
f137c1386384 Add a NULL for PurplePluginProtocolInfo::get_moods to all the plugins I build
Paul Aurich <darkrain42@pidgin.im>
parents: 29302
diff changeset
3079 NULL, /* get_media_caps */
30138
cca9685df785 Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <darkrain42@pidgin.im>
parents: 29965
diff changeset
3080 NULL, /* get_moods */
cca9685df785 Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <darkrain42@pidgin.im>
parents: 29965
diff changeset
3081 NULL, /* set_public_alias */
32315
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32262
diff changeset
3082 NULL /* get_public_alias */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3083 };
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3084
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3085 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3086 * Load the plugin.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3087 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3088 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3089 msim_load(PurplePlugin *plugin)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3090 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3091 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3092 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3093
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3094 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3095 * Called when friends have been imported to buddy list on server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3096 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3097 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
3098 msim_import_friends_cb(MsimSession *session, const MsimMessage *reply, gpointer user_data)
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3099 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3100 MsimMessage *body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3101 gchar *completed;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3102
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3103 /* Check if the friends were imported successfully. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3104 body = msim_msg_get_dictionary(reply, "body");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3105 g_return_if_fail(body != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3106 completed = msim_msg_get_string(body, "Completed");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3107 msim_msg_free(body);
25676
826cea977e8e This should fix a sporadic crash? The behavior before was clearly wrong--
Mark Doliner <markdoliner@pidgin.im>
parents: 25567
diff changeset
3108 g_return_if_fail(completed != NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3109 if (!g_str_equal(completed, "True"))
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3110 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3111 purple_debug_info("msim_import_friends_cb",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3112 "failed to import friends: %s", completed);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3113 purple_notify_error(session->account, _("Add friends from MySpace.com"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3114 _("Importing friends failed"), NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3115 g_free(completed);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3116 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3117 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3118 g_free(completed);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3119
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3120 purple_debug_info("msim_import_friends_cb",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3121 "added friends to server-side buddy list, requesting new contacts from server");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3122
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3123 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3124
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3125 /* TODO: show, X friends have been added */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3126 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3127
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3128 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3129 * Import friends from myspace.com.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3130 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3131 static void msim_import_friends(PurplePluginAction *action)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3132 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3133 PurpleConnection *gc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3134 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3135 gchar *group_name;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3136
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3137 gc = (PurpleConnection *)action->context;
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
3138 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3139
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3140 group_name = "MySpace Friends";
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3141
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3142 g_return_if_fail(msim_send(session,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3143 "persist", MSIM_TYPE_INTEGER, 1,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3144 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3145 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3146 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3147 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3148 "uid", MSIM_TYPE_INTEGER, session->userid,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3149 "rid", MSIM_TYPE_INTEGER,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3150 msim_new_reply_callback(session, msim_import_friends_cb, NULL),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3151 "body", MSIM_TYPE_STRING,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3152 g_strdup_printf("GroupName=%s", group_name),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3153 NULL));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3154 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3155
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3156 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3157 * Actions menu for account.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3158 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3159 static GList *
31739
88b0a203e2e0 Silence a swath of warnings regarding set-but-unused.
Paul Aurich <darkrain42@pidgin.im>
parents: 31595
diff changeset
3160 msim_actions(PurplePlugin *plugin, gpointer context /* PurpleConnection* */)
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3161 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3162 GList *menu;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3163 PurplePluginAction *act;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3164
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3165 menu = NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3166
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3167 #if 0
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3168 /* TODO: find out how */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3169 act = purple_plugin_action_new(_("Find people..."), msim_);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3170 menu = g_list_append(menu, act);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3171
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3172 act = purple_plugin_action_new(_("Change IM name..."), NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3173 menu = g_list_append(menu, act);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3174 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3175
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3176 act = purple_plugin_action_new(_("Add friends from MySpace.com"), msim_import_friends);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3177 menu = g_list_append(menu, act);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3178
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3179 return menu;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3180 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3181
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3182 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3183 * Based on MSN's plugin info comments.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3184 */
19926
fd8c090b8516 Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <deryni@pidgin.im>
parents: 19913
diff changeset
3185 static PurplePluginInfo info = {
23276
f4944cfaa1ff Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23272
diff changeset
3186 PURPLE_PLUGIN_MAGIC,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3187 PURPLE_MAJOR_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3188 PURPLE_MINOR_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3189 PURPLE_PLUGIN_PROTOCOL, /**< type */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3190 NULL, /**< ui_requirement */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3191 0, /**< flags */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3192 NULL, /**< dependencies */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3193 PURPLE_PRIORITY_DEFAULT, /**< priority */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3194
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3195 "prpl-myspace", /**< id */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3196 "MySpaceIM", /**< name */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3197 MSIM_PRPL_VERSION_STRING, /**< version */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3198 /** summary */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3199 "MySpaceIM Protocol Plugin",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3200 /** description */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3201 "MySpaceIM Protocol Plugin",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3202 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */
33955
55aa58076485 Use https URLs for pidgin.im and developer.pidgin.im.
Mark Doliner <mark@kingant.net>
parents: 33911
diff changeset
3203 "https://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3204
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3205 msim_load, /**< load */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3206 NULL, /**< unload */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3207 NULL, /**< destroy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3208 NULL, /**< ui_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3209 &prpl_info, /**< extra_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3210 NULL, /**< prefs_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3211 msim_actions, /**< msim_actions */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3212 NULL, /**< reserved1 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3213 NULL, /**< reserved2 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3214 NULL, /**< reserved3 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3215 NULL /**< reserved4 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3216 };
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3217
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3218 #ifdef MSIM_SELF_TEST
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3219 /*
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3220 * Test functions.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3221 * Used to test or try out the internal workings of msimprpl. If you're reading
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3222 * this code for the first time, these functions can be instructive in learning
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3223 * how msimprpl is architected.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3224 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3225
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3226 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3227 * Test MsimMessage for basic functionality.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3228 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3229 static int
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3230 msim_test_msg(void)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3231 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3232 MsimMessage *msg, *msg_cloned, *msg2;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3233 GList *list;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3234 gchar *packed, *packed_expected, *packed_cloned;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3235 guint failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3236
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3237 failures = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3238
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3239 purple_debug_info("msim", "\n\nTesting MsimMessage\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3240 msg = msim_msg_new(NULL); /* Create a new, empty message. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3241
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3242 /* Append some new elements. */
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
3243 msg = msim_msg_append(msg, "bx", MSIM_TYPE_BINARY, g_string_new_len("XXX", 3));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3244 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3245 msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3246 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3247 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v52/xxx\\yyy"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3248 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3249 msim_msg_dump("msg debug str=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3250 packed = msim_msg_pack(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3251
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3252 purple_debug_info("msim", "msg packed=%s\n", packed);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3253
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3254 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1"
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3255 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\";
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3256
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
3257 if (!g_str_equal(packed, packed_expected)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3258 purple_debug_info("msim", "!!!(%d), msim_msg_pack not what expected: %s != %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3259 ++failures, packed, packed_expected);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3260 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3261
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3262
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3263 msg_cloned = msim_msg_clone(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3264 packed_cloned = msim_msg_pack(msg_cloned);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3265
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3266 purple_debug_info("msim", "msg cloned=%s\n", packed_cloned);
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
3267 if (!g_str_equal(packed, packed_cloned)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3268 purple_debug_info("msim", "!!!(%d), msim_msg_pack on cloned message not equal to original: %s != %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3269 ++failures, packed_cloned, packed);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3270 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3271
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3272 g_free(packed);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3273 g_free(packed_cloned);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3274 msim_msg_free(msg_cloned);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3275 msim_msg_free(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3276
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3277 /* Try some of the more advanced functionality */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3278 list = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3279
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3280 list = g_list_prepend(list, "item3");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3281 list = g_list_prepend(list, "item2");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3282 list = g_list_prepend(list, "item1");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3283 list = g_list_prepend(list, "item0");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3284
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3285 msg = msim_msg_new(NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3286 msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3287 msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3288 msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3289 msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3290 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3291
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3292 msim_msg_dump("msg with list=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3293 purple_debug_info("msim", "msg with list packed=%s\n", msim_msg_pack(msg));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3294
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3295 msg2 = msim_msg_new(NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3296 msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3297 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3298 msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3299 purple_debug_info("msim", "msg with dict packed=%s\n", msim_msg_pack(msg2));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3300
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3301 msim_msg_free(msg2);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3302
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3303 return failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3304 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3305
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3306 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3307 * Test protocol-level escaping/unescaping.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3308 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3309 static int
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3310 msim_test_escaping(void)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3311 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3312 guint failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3313 gchar *raw, *escaped, *unescaped, *expected;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3314
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3315 failures = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3316
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3317 purple_debug_info("msim", "\n\nTesting escaping\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3318
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3319 raw = "hello/world\\hello/world";
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3320
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3321 escaped = msim_escape(raw);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3322 purple_debug_info("msim", "msim_test_escaping: raw=%s, escaped=%s\n", raw, escaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3323 expected = "hello/1world/2hello/1world";
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
3324 if (!g_str_equal(escaped, expected)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3325 purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3326 ++failures, escaped, expected);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3327 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3328
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3329
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3330 unescaped = msim_unescape(escaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3331 g_free(escaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3332 purple_debug_info("msim", "msim_test_escaping: unescaped=%s\n", unescaped);
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
3333 if (!g_str_equal(raw, unescaped)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3334 purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3335 ++failures, raw, unescaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3336 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3337
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3338 return failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3339 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3340
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3341 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3342 msim_test_all(void)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3343 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3344 guint failures;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3345
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3346 failures = 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3347 failures += msim_test_msg();
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3348 failures += msim_test_escaping();
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3349
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3350 if (failures) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3351 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3352 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3353 purple_debug_info("msim", "msim_test_all - all tests passed!\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3354 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3355 exit(0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3356 }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3357 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3358
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3359 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3360 Handle a myim:addContact command, after username has been looked up.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3361 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3362 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3363 msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3364 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3365 MsimMessage *body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3366 gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3367
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3368 body = msim_msg_get_dictionary(userinfo, "body");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3369 username = msim_msg_get_string(body, "UserName");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3370 msim_msg_free(body);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3371
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3372 if (!username) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3373 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3374
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3375 uid = msim_msg_get_integer(userinfo, "UserID");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3376 g_return_if_fail(uid != 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3377
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3378 username = g_strdup_printf("%d", uid);
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3379 }
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3380
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3381 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3382
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3383 g_free(username);
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3384 }
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3385
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3386 /* TODO: move uid->username resolving to IM sending and buddy adding functions,
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3387 * so that user can manually add or IM by userid and username automatically
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3388 * looked up if possible? */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3389
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3390 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3391 * Handle a myim:sendIM URI command, after username has been looked up.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3392 */
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3393 static void
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3394 msim_uri_handler_sendIM_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3395 {
34637
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3396 PurpleIMConversation *im;
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3397 MsimMessage *body;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3398 gchar *username;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3399
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3400 body = msim_msg_get_dictionary(userinfo, "body");
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3401 username = msim_msg_get_string(body, "UserName");
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3402 msim_msg_free(body);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3403
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3404 if (!username) {
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3405 guint uid;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3406
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3407 uid = msim_msg_get_integer(userinfo, "UserID");
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3408 g_return_if_fail(uid != 0);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3409
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3410 username = g_strdup_printf("%d", uid);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3411 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3412
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3413
34637
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3414 im = purple_conversations_find_im_with_account(username, session->account);
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3415 if (!im) {
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3416 purple_debug_info("msim_uri_handler", "creating new conversation for %s\n", username);
34637
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3417 im = purple_im_conversation_new(session->account, username);
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3418 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3419
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3420 /* Just open the window so the user can send an IM. */
34637
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3421 purple_conversation_present(PURPLE_CONVERSATION(im));
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3422
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3423 g_free(username);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3424 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3425
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3426 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3427 msim_uri_handler(const gchar *proto, const gchar *cmd, GHashTable *params)
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3428 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3429 PurpleAccount *account;
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
3430 PurpleConnection *gc;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3431 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3432 GList *l;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3433 gchar *uid_str, *cid_str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3434 guint uid, cid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3435
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3436 if (g_ascii_strcasecmp(proto, "myim"))
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3437 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3438
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3439 /* Parameters are case-insensitive. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3440 uid_str = g_hash_table_lookup(params, "uid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3441 cid_str = g_hash_table_lookup(params, "cid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3442
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3443 uid = uid_str ? atol(uid_str) : 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3444 cid = cid_str ? atol(cid_str) : 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3445
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3446 /* Need a contact. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3447 g_return_val_if_fail(cid != 0, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3448
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3449 /* TODO: if auto=true, "Add all the people on this page to my IM List!", on
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3450 * http://collect.myspace.com/index.cfm?fuseaction=im.friendslist. Don't need a cid. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3451
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3452 /* Convert numeric contact ID back to a string. Needed for looking up. Don't just
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3453 * directly use cid directly from parameters, because it might not be numeric.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3454 * It is trivial to change this to allow cID to be a username, but that's not how
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3455 * the official MySpaceIM client works, so don't provide that functionality. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3456 cid_str = g_strdup_printf("%d", cid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3457
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3458
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3459 /* Find our account with specified user id, or use first connected account if uid=0. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3460 account = NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3461 l = purple_accounts_get_all();
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3462 while (l) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3463 if (purple_account_is_connected(l->data) &&
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3464 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3465 account = l->data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3466 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3467 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3468 l = l->next;
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3469 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3470
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3471 if (!account) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3472 purple_notify_error(NULL, _("myim URL handler"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3473 _("No suitable MySpaceIM account could be found to open this myim URL."),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3474 _("Enable the proper MySpaceIM account and try again."));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3475 g_free(cid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3476 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3477 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3478
32262
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
3479 gc = purple_account_get_connection(account);
c764e87d4b34 Convert myspace prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32157
diff changeset
3480 session = purple_connection_get_protocol_data(gc);
33691
c7d516ebb630 myspace.c: Fix memleaks in msim_uri_handler
Niels Thykier <niels@thykier.net>
parents: 32681
diff changeset
3481 if (session == NULL) {
c7d516ebb630 myspace.c: Fix memleaks in msim_uri_handler
Niels Thykier <niels@thykier.net>
parents: 32681
diff changeset
3482 g_free(cid_str);
c7d516ebb630 myspace.c: Fix memleaks in msim_uri_handler
Niels Thykier <niels@thykier.net>
parents: 32681
diff changeset
3483 return FALSE;
c7d516ebb630 myspace.c: Fix memleaks in msim_uri_handler
Niels Thykier <niels@thykier.net>
parents: 32681
diff changeset
3484 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3485
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3486 /* Lookup userid to username. TODO: push this down, to IM sending/contact
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3487 * adding functions. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3488
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3489 /* myim:sendIM?uID=USERID&cID=CONTACTID */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3490 if (!g_ascii_strcasecmp(cmd, "sendIM")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3491 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_sendIM_cb, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3492 g_free(cid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3493 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3494
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3495 /* myim:addContact?uID=USERID&cID=CONTACTID */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3496 } else if (!g_ascii_strcasecmp(cmd, "addContact")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3497 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_addContact_cb, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3498 g_free(cid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3499 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3500 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3501
33691
c7d516ebb630 myspace.c: Fix memleaks in msim_uri_handler
Niels Thykier <niels@thykier.net>
parents: 32681
diff changeset
3502 g_free(cid_str);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3503 return FALSE;
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3504 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3505
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3506 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3507 * Initialize plugin.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3508 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3509 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3510 init_plugin(PurplePlugin *plugin)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3511 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3512 #ifdef MSIM_SELF_TEST
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3513 msim_test_all();
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3514 exit(0);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3515 #endif /* MSIM_SELF_TEST */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3516
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3517 PurpleAccountOption *option;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3518 static gboolean initialized = FALSE;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3519
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3520 /* TODO: default to automatically try different ports. Make the user be
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3521 * able to set the first port to try (like LastConnectedPort in Windows client). */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3522 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3523 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3524
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3525 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3526 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3527
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3528 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3529 option = purple_account_option_bool_new(_("Show display name in status text"), "show_display_name", TRUE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3530 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3531
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3532 option = purple_account_option_bool_new(_("Show headline in status text"), "show_headline", TRUE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3533 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3534 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3535
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3536 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS
19938
a711277dac04 The 'Send Emoticons' preferences (which is only configurable if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined) defaults to TRUE when used, a reasonable default. The preference, if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined, should do the same.
Evan Schoenberg <evands@pidgin.im>
parents: 19926
diff changeset
3537 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", TRUE);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3538 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3539 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3540
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3541 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3542 option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3543 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3544
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3545 option = purple_account_option_int_new(_("Base font size (points)"), "base_font_size", MSIM_BASE_FONT_POINT_SIZE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3546 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3547 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3548
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3549 /* Code below only runs once. Based on oscar.c's oscar_init(). */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3550 if (initialized)
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3551 return;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3552
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3553 initialized = TRUE;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3554
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3555 purple_signal_connect(purple_get_core(), "uri-handler", &initialized,
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3556 PURPLE_CALLBACK(msim_uri_handler), NULL);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3557 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3558
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3559 PURPLE_INIT_PLUGIN(myspace, init_plugin, info);

mercurial