libpurple/protocols/myspace/myspace.c

Tue, 27 Aug 2013 22:55:52 +0530

author
Ankit Vani <a@nevitus.org>
date
Tue, 27 Aug 2013 22:55:52 +0530
branch
soc.2013.gobjectification.plugins
changeset 36586
fbd81e3753ef
parent 36583
0582190c9382
child 36613
0e96218aa13a
permissions
-rw-r--r--

Refactored myspace to use the new protocol API

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
36526
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
35 #include "plugins.h"
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
36 #include "myspace.h"
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
37
36586
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
38 static PurpleProtocol *my_protocol = NULL;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
39
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
40 static void msim_set_status(PurpleAccount *account, PurpleStatus *status);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
41 static void msim_set_idle(PurpleConnection *gc, int time);
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 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
44 * 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
45 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
46 * @param msg The message to postprocess.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
47 * @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
48 * @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
49 * @param uid The userid to insert.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
50 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
51 * 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
52 * 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
53 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
54 * 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
55 * 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
56 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
57 * 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
58 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
59 static MsimMessage *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
60 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
61 const gchar *uid_field_name, guint uid)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
62 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
63 MsimMessageElement *elem;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
64
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
65 /* 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
66 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
67 gchar *fmt_string;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
68 gchar *uid_str, *new_str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
69
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
70 /* 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
71 * 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
72 * 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
73 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
74 * 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
75 * 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
76 * 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
77 * just by a string replacement.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
78 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
79 fmt_string = msim_msg_pack_element_data(elem);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
80
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
81 uid_str = g_strdup_printf("%d", uid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
82 new_str = purple_strreplace(fmt_string, "<uid>", uid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
83 g_free(uid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
84 g_free(fmt_string);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
85
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
86 /* Free the old element data */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
87 msim_msg_free_element_data(elem->data);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
88
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
89 /* Replace it with our new data */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
90 elem->data = new_str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
91 elem->type = MSIM_TYPE_RAW;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
92
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
93 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
94 /* Otherwise, insert new field into outgoing message. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
95 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
96 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
97
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
98 return msg;
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 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
102 * 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
103 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
104 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
105 * @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
106 * @param data The message to postprocess and send.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
107 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
108 * The data message should contain these fields:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
109 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
110 * _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
111 * _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
112 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
113 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
114 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
115 gpointer data)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
116 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
117 gchar *uid_field_name, *uid_before, *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
118 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
119 MsimMessage *msg, *body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
120
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
121 msg = (MsimMessage *)data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
122
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
123 /* Obtain userid from userinfo message. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
124 body = msim_msg_get_dictionary(userinfo, "body");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
125 g_return_if_fail(body != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
126
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
127 uid = msim_msg_get_integer(body, "UserID");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
128 msim_msg_free(body);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
129
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
130 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
131
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
132 if (!uid) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
133 gchar *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
134
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
135 msg = g_strdup_printf(_("No such user: %s"), username);
34868
faa5b053f310 Replaced purple_conversation_helper_present_error() with simpler purple_conversation_present_error()
Ankit Vani <a@nevitus.org>
parents: 34855
diff changeset
136 if (!purple_conversation_present_error(username, session->account, msg)) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
137 purple_notify_error(NULL, NULL, _("User lookup"), msg);
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
140 g_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
141 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
142 /* TODO: free
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
143 * msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
144 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
145 return;
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
148 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
149 uid_before = msim_msg_get_string(msg, "_uid_before");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
150
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
151 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
152
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
153 /* Send */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
154 if (!msim_msg_send(session, msg)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
155 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
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
159 /* 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
160 * 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
161 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
162 g_free(uid_field_name);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
163 g_free(uid_before);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
164 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
165 /* TODO: free
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
166 * msim_msg_free(msg);
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 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
171 * Postprocess and send a message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
172 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
173 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
174 * @param msg Message to postprocess. Will NOT be freed.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
175 * @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
176 * @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
177 * @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
178 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
179 * @return TRUE if successful.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
180 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
181 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
182 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
183 const gchar *username, const gchar *uid_field_name,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
184 const gchar *uid_before)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
185 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
186 PurpleBuddy *buddy;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
187 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
188 gboolean rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
189
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
190 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
191
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
192 /* Store information for msim_postprocess_outgoing_cb(). */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
193 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
194 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
195 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
196
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
197 /* 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
198 if (msim_is_userid(username)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
199 uid = atol(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
200 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
201 /* 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
202 buddy = purple_blist_find_buddy(session->account, username);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
203 if (buddy) {
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
204 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
205 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
206 uid = 0;
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
209 if (!buddy || !uid) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
210 /* 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
211 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
212 username ? username : "(NULL)");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
213 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
214 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
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
218 /* Already have uid, postprocess and send msg immediately. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
219 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
220 username ? username : "(NULL)", uid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
221
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
222 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
223
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
224 rc = msim_msg_send(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
225
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
226 /* TODO: free
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
227 * msim_msg_free(msg);
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
230 return rc;
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 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
234 * Send a buddy message of a given type.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
235 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
236 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
237 * @param who Username to send message to.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
238 * @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
239 * @param type A MSIM_BM_* constant.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
240 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
241 * @return TRUE if success, FALSE if fail.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
242 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
243 * 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
244 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
245 gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
246 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
247 int type)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
248 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
249 gboolean rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
250 MsimMessage *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
251 const gchar *from_username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
252
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
253 g_return_val_if_fail(who != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
254 g_return_val_if_fail(text != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
255
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
256 from_username = purple_account_get_username(session->account);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
257
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
258 g_return_val_if_fail(from_username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
259
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
260 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
261 type, from_username, who, text);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
262
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
263 msg = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
264 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
265 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
266 /* 't' will be inserted here */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
267 "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
268 "msg", MSIM_TYPE_STRING, g_strdup(text),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
269 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
270
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
271 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
272
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
273 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
274
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
275 return rc;
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 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
279 * Lookup a username by userid, from buddy list.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
280 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
281 * @param wanted_uid
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
282 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
283 * @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
284 * 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
285 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
286 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
287 static const gchar *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
288 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
289 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
290 GSList *buddies, *cur;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
291 const gchar *ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
292
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
293 buddies = purple_blist_find_buddies(account, NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
294
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
295 if (!buddies)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
296 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
297 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
298 return NULL;
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
301 ret = NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
302
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
303 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
304 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
305 PurpleBuddy *buddy;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
306 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
307 const gchar *name;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
308
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
309 /* See finch/gnthistory.c */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
310 buddy = cur->data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
311
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
312 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
313 name = purple_buddy_get_name(buddy);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
314
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
315 if (uid == wanted_uid)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
316 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
317 ret = name;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
318 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
319 }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
320 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
321
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
322 g_slist_free(buddies);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
323 return ret;
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 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
327 * 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
328 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
329 * @param cb The callback, an MSIM_USER_LOOKUP_CB.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
330 * @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
331 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
332 * @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
333 * Put the rid in your request, 'rid' field.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
334 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
335 * TODO: Make more generic and more specific:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
336 * 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
337 * 2) data - make it an MsimMessage?
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
338 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
339 guint
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
340 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
341 gpointer data)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
342 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
343 guint rid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
344
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
345 rid = session->next_rid++;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
346
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
347 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
348 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
349
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
350 return rid;
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 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
354 * Return the icon name for a buddy and account.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
355 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
356 * @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
357 * @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
358 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
359 * @return The base icon name string.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
360 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
361 static const gchar *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
362 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
363 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
364 /* 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
365 * https://developer.pidgin.im/wiki/MySpaceIM. */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
366 return "myspace";
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 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
370 * Obtain the status text for a buddy.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
371 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
372 * @param buddy The buddy to obtain status text for.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
373 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
374 * @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
375 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
376 static char *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
377 msim_status_text(PurpleBuddy *buddy)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
378 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
379 MsimUser *user;
31739
88b0a203e2e0 Silence a swath of warnings regarding set-but-unused.
Paul Aurich <darkrain42@pidgin.im>
parents: 31595
diff changeset
380 const gchar *display_name = NULL, *headline = NULL;
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
381 PurpleAccount *account;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
382
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
383 g_return_val_if_fail(buddy != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
384
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
385 account = purple_buddy_get_account(buddy);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
386
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
387 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
388 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
389 /* 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
390 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
391 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
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
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 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
395 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
396 }
25197
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
399 /* 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
400
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
401 if (display_name && headline) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
402 return g_strconcat(display_name, " ", headline, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
403 } else if (display_name) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
404 return g_strdup(display_name);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
405 } else if (headline) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
406 return g_strdup(headline);
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
409 return NULL;
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 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
413 * Obtain the tooltip text for a buddy.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
414 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
415 * @param buddy Buddy to obtain tooltip text on.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
416 * @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
417 * @param full TRUE if should obtain full tooltip text.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
418 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
419 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
420 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
421 gboolean full)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
422 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
423 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
424
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
425 g_return_if_fail(buddy != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
426 g_return_if_fail(user_info != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
427
25502
40f87522e2d0 propagate from branch 'im.pidgin.pidgin' (head db75fad3c5a74a5d380131b678995c6a78c140cb)
Paul Aurich <darkrain42@pidgin.im>
parents: 24867 25240
diff changeset
428 user = msim_get_user_from_buddy(buddy, TRUE);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
429
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
430 if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
431 PurpleAccount *account = purple_buddy_get_account(buddy);
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
432 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
433 MsimSession *session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
434
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
435 /* TODO: if (full), do something different? */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
436
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
437 /* 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
438 * the asynchronous lookup like oscar does (tooltip shows
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
439 * '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
440 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
441 * Right now, only show what we have on hand.
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
444 /* Show abbreviated user info. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
445 msim_append_user_info(session, user_info, user, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
446 }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
447 }
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
448
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
449 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
450 * Get possible user status types. Based on mockprpl.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
451 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
452 * @return GList of status types.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
453 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
454 static GList *
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
455 msim_status_types(PurpleAccount *acct)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
456 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
457 GList *types;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
458 PurpleStatusType *status;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
459
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
460 types = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
461
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
462 /* 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
463 #define _MSIM_ADD_NEW_STATUS(prim) status = \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
464 purple_status_type_new_with_attrs( \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
465 prim, /* PurpleStatusPrimitive */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
466 NULL, /* id - use default */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
467 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
468 TRUE, /* saveable */ \
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
469 TRUE, /* user_settable */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
470 FALSE, /* not independent */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
471 \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
472 /* Attributes - each status can have a message. */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
473 "message", \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
474 _("Message"), \
34813
61864c37aea6 Fixed my misalignment
Ankit Vani <a@nevitus.org>
parents: 34811
diff changeset
475 purple_g_value_new(G_TYPE_STRING), \
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
476 NULL); \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
477 \
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 types = g_list_append(types, status)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
480
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 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
483 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
484 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
485 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
486
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
487 /* 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
488 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
489 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
490 "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
491 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
492 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
493 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
494 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
495
34811
377d4d43e0e0 Refactored the remaining protocols to use GType and GValue instead of PurpleValue
Ankit Vani <a@nevitus.org>
parents: 34760
diff changeset
496 PURPLE_TUNE_ARTIST, _("Tune Artist"), purple_g_value_new(G_TYPE_STRING),
377d4d43e0e0 Refactored the remaining protocols to use GType and GValue instead of PurpleValue
Ankit Vani <a@nevitus.org>
parents: 34760
diff changeset
497 PURPLE_TUNE_TITLE, _("Tune Title"), purple_g_value_new(G_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
498 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
499
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 types = g_list_append(types, status);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
501
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
502 return types;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
503 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
504
27378
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
505 /*
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
506 * 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
507 * 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
508 * 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
509 */
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
510 #define msim_put32(buf, data) ( \
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
511 (*((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
512 (*((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
513 (*((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
514 (*((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
515 4)
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
516
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
517 /**
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
518 * 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
519 *
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
520 * @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
521 * @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
522 * @param password User's cleartext password.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
523 * @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
524 *
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
525 * @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
526 * 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
527 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
528 static gchar *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
529 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
530 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
531 {
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
532 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
533 PurpleCipher *rc4;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
534
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
535 guchar hash_pw[HASH_SIZE];
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
536 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
537 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
538 GString *data;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
539 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
540 size_t data_out_len;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
541 gsize conv_bytes_read, conv_bytes_written;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
542 GError *conv_error;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
543 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
544 int i;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
545 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
546
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
547 g_return_val_if_fail(nonce != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
548 g_return_val_if_fail(email != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
549 g_return_val_if_fail(password != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
550 g_return_val_if_fail(response_len != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
551
25358
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
552 /*
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
553 * 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
554 * 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
555 * 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
556 * truncate it.
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
557 */
3f54902320cd MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 25324
diff changeset
558 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
559
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
560 /* Convert password to lowercase (required for passwords containing
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
561 * uppercase characters). MySpace passwords are lowercase,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
562 * 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
563 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
564 g_free(password_truncated);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
565
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
566 /* Convert ASCII password to UTF16 little endian */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
567 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
568 conv_error = NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
569 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
570 &conv_bytes_read, &conv_bytes_written, &conv_error);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
571 g_free(password_utf8_lc);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
572
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
573 if (conv_error != NULL) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
574 purple_debug_error("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
575 "g_convert password UTF8->UTF16LE failed: %s",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
576 conv_error->message);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
577 g_error_free(conv_error);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
578 return NULL;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
579 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
580
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
581 /* Compute password hash */
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
582 sha1 = purple_sha1_hash_new();
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
583 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
584 conv_bytes_written);
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
585 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
586 purple_hash_reset(sha1);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
587 g_free(password_utf16le);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
588
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
589 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
590 purple_debug_info("msim", "pwhash = ");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
591 for (i = 0; i < sizeof(hash_pw); i++)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
592 purple_debug_info("msim", "%.2x ", hash_pw[i]);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
593 purple_debug_info("msim", "\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
594 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
595
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
596 /* key = sha1(sha1(pw) + nonce2) */
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
597 purple_hash_append(sha1, hash_pw, HASH_SIZE);
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34557
diff changeset
598 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
599 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
600 g_object_unref(sha1);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
601
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
602 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
603 purple_debug_info("msim", "key = ");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
604 for (i = 0; i < sizeof(key); i++) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
605 purple_debug_info("msim", "%.2x ", key[i]);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
606 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
607 purple_debug_info("msim", "\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
608 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
609
34557
295cd5bf4c41 Refactored protocols msn, myspace, oscar, simple, yahoo to use GObject-based PurpleCipher
Ankit Vani <a@nevitus.org>
parents: 34208
diff changeset
610 rc4 = purple_rc4_cipher_new();
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
611
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
612 /* 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
613 * 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
614 purple_cipher_set_key(rc4, key, 0x10);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
615
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
616 /* rc4 encrypt:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
617 * nonce1+email+IP list */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
618
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
619 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
620 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
621
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
622 /* Include the null terminator */
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
623 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
624
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
625 while (data->len % 4 != 0)
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
626 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
627
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
628 #ifdef SEND_OUR_IP_ADDRESSES
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
629 /* 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
630 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
631 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
632 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
633 #else
e97fd10d4b57 Fix a few problems with our myspace login response:
Mark Doliner <markdoliner@pidgin.im>
parents: 27377
diff changeset
634 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
635 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
636 #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
637
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
638 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
639
34557
295cd5bf4c41 Refactored protocols msn, myspace, oscar, simple, yahoo to use GObject-based PurpleCipher
Ankit Vani <a@nevitus.org>
parents: 34208
diff changeset
640 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
641 (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
642 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
643
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
644 if (data_out_len != data->len) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
645 purple_debug_info("msim", "msim_compute_login_response: "
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
646 "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
647 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
648 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
649
25198
dd8382881a45 Use a GString here when constructing the data. It's way more
Mark Doliner <markdoliner@pidgin.im>
parents: 25197
diff changeset
650 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
651
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
652 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
653 purple_debug_info("msim", "response=<%s>\n", data_out);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
654 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
655
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
656 *response_len = data_out_len;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
657
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
658 return (gchar *)data_out;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
659 }
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 /**
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
662 * Process a login challenge, sending a response.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
663 *
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
664 * @param session
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
665 * @param msg Login challenge message.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
666 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
667 * @return TRUE if successful, FALSE if not
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
668 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
669 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
670 msim_login_challenge(MsimSession *session, MsimMessage *msg)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
671 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
672 PurpleAccount *account;
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
673 gchar *response;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
674 guint response_len;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
675 gchar *nc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
676 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
677 gboolean ret;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
678
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
679 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
680
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
681 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
682
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
683 account = session->account;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
684
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
685 g_return_val_if_fail(account != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
686
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
687 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
688
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
689 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
690 " bytes, decoded\n", nc_len);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
691
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
692 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
693 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
694 "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
695 purple_connection_error (session->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
696 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
697 _("Unexpected challenge length from server"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
698 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
699 }
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 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
702
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
703 response_len = 0;
34025
82ef910cc2be Fix myspace plugin compile.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32681
diff changeset
704 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
705
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
706 g_free(nc);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
707
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
708 ret = msim_send(session,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
709 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
710 /* 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
711 "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
712 /* 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
713 "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
714 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
715 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
716 "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
717 "reconn", MSIM_TYPE_INTEGER, 0,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
718 "status", MSIM_TYPE_INTEGER, 100,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
719 "id", MSIM_TYPE_INTEGER, 1,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
720 NULL);
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
721
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
722 g_free(response);
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
723
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
724 return ret;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
725 }
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 * Process unrecognized information.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
729 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
730 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
731 * @param msg An MsimMessage that was unrecognized, or NULL.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
732 * @param note Information on what was unrecognized, or NULL.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
733 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
734 void
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
735 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
736 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
737 /* 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
738 * 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
739 * But not too much information so that a user
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
740 * posting this dump reveals confidential information.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
741 */
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 /* 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
744 * 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
745 * 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
746 *
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 * 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
748 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
749
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
750 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
751 (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
752 purple_account_get_username(session->account) : "(NULL)");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
753 if (note) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
754 purple_debug_info("msim", "(Note: %s)\n", note);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
755 }
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 if (msg) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
758 msim_msg_dump("Unrecognized message dump: %s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
759 }
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
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
762 /** 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
763 * has a username, and set one if desired. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
764 static gboolean
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
765 msim_is_username_set(MsimSession *session, MsimMessage *msg)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
766 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
767 g_return_val_if_fail(msg != NULL, FALSE);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
768 g_return_val_if_fail(session->gc != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
769
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
770 session->sesskey = msim_msg_get_integer(msg, "sesskey");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
771 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
772
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
773 /* 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
774
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
775 /* Comes with: proof,profileid,userid,uniquenick -- all same values
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
776 * 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
777 session->userid = msim_msg_get_integer(msg, "userid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
778
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
779 /* 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
780 purple_account_set_int(session->account, "uid", session->userid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
781
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
782 /* Not sure what profileid is used for. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
783 if (msim_msg_get_integer(msg, "profileid") != session->userid) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
784 msim_unrecognized(session, msg,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
785 "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
786 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
787
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
788 /* 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
789 * 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
790 * 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
791 session->username = msim_msg_get_string(msg, "uniquenick");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
792
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
793 /* If user lacks a username, help them get one. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
794 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
795 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
796 purple_request_yes_no(session->gc,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
797 _("MySpaceIM - No Username Set"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
798 _("You appear to have no MySpace username."),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
799 _("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
800 0,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
801 session->account,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
802 NULL,
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 session->gc,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
805 G_CALLBACK(msim_set_username_cb),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
806 G_CALLBACK(msim_do_not_set_username_cb));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
807 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
808 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
809 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
810 return TRUE;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
811 }
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 #ifdef MSIM_USE_KEEPALIVE
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
814 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
815 * 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
816 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
817 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
818 msim_check_alive(gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
819 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
820 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
821 time_t delta;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
822
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
823 session = (MsimSession *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
824
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
825 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
826
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
827 /* 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
828 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
829 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
830 "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
831 delta, MSIM_KEEPALIVE_INTERVAL);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
832 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
833 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
834 _("Lost connection with server"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
835
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
836 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
837 }
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 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
840 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
841 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
842
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
843 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
844 * Handle mail reply checks.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
845 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
846 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
847 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
848 {
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
849 MsimMessage *body;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
850 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
851 /* Information for each new inbox message type. */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
852 static struct
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
853 {
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
854 const gchar *key;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
855 guint bit;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
856 const gchar *url;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
857 const gchar *text;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
858 } message_types[] = {
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
859 { "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
860 { "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
861 { "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
862 { "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
863 { "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
864 };
25746
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
865 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
866 *tos[G_N_ELEMENTS(message_types) + 1] = { "" },
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
867 *urls[G_N_ELEMENTS(message_types) + 1] = { "" },
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
868 *subjects[G_N_ELEMENTS(message_types) + 1] = { "" };
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
869
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
870 g_return_if_fail(reply != NULL);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
871
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
872 /* 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
873 /* 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
874 used */
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
875 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
876 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
877 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
878 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
879 message_types[4].text = _("New picture comments");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
880
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
881 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
882
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
883 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
884 return;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
885
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
886 n = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
887
25746
e97bb5964b19 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25716
diff changeset
888 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
889 const gchar *key;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
890 guint bit;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
891
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
892 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
893 bit = message_types[i].bit;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
894
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
895 if (msim_msg_get(body, key)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
896 /* 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
897 * (edge triggered) */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
898 if (!(session->inbox_status & bit)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
899 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
900 key ? key : "(NULL)", n);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
901
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
902 subjects[n] = message_types[i].text;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
903 froms[n] = _("MySpace");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
904 tos[n] = session->username;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
905 /* TODO: append token, web challenge, so automatically logs in.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
906 * 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
907 */
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
908 urls[n] = message_types[i].url;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
909
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
910 ++n;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
911 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
912 purple_debug_info("msim",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
913 "msim_check_inbox_cb: already notified of %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
914 key ? key : "(NULL)");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
915 }
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 session->inbox_status |= bit;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
918 }
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 if (n) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
922 purple_debug_info("msim",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
923 "msim_check_inbox_cb: notifying of %d\n", n);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
924
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
925 /* 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
926 purple_notify_emails(session->gc, /* handle */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
927 n, /* count */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
928 TRUE, /* detailed */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
929 subjects, froms, tos, urls,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
930 NULL, /* PurpleNotifyCloseCallback cb */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
931 NULL); /* gpointer user_data */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
932
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
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
935 msim_msg_free(body);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
936 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
937
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
938 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
939 * Send request to check if there is new mail.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
940 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
941 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
942 msim_check_inbox(gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
943 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
944 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
945
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
946 session = (MsimSession *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
947
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
948 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
949 g_return_val_if_fail(msim_send(session,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
950 "persist", MSIM_TYPE_INTEGER, 1,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
951 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
952 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
953 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
954 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
955 "uid", MSIM_TYPE_INTEGER, session->userid,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
956 "rid", MSIM_TYPE_INTEGER,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
957 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
958 "body", MSIM_TYPE_STRING, g_strdup(""),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
959 NULL), TRUE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
960
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
961 /* 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
962 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
963 }
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 /**
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
966 * 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
967 * 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
968 *
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 * @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
970 */
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
971 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
972 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
973 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
974 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
975 PurpleGroup *group;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
976 PurpleBuddy *buddy;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
977 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
978 gchar *username, *group_name, *display_name;
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
979 guint uid, visibility;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
980
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
981 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
982 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
983 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
984
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
985 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
986 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
987 display_name = NULL;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
988 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
989 } else {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
990 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
991 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
992 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
993 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
994 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
995 }
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 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
998 "*** 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
999
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1000 /* 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
1001 * the documentation claims). */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1002 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
1003 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
1004 g_free(group_name);
23145
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1005 group_name = g_strdup(_("IM Friends"));
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1006 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
1007 }
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
1008 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
1009 if (!group) {
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1010 group = purple_group_new(group_name);
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1011 /* Add group to beginning. See #2752. */
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1012 purple_blist_add_group(group, NULL);
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1013 }
20a31aeb6946 Make MySpace group handling more consistent. References #3378.
Daniel Atallah <datallah@pidgin.im>
parents: 22749
diff changeset
1014 g_free(group_name);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1015
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1016 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
1017 if (visibility == 2) {
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1018 /* 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
1019 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
1020 msim_msg_free(contact_info);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1021 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
1022 g_free(display_name);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1023 return;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1024 }
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
1025
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1026 /* 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
1027 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
1028 if (!buddy) {
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1029 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
1030 "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
1031 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
1032 }
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 /* 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
1035 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
1036
34304
faf0414a8b51 Fix most of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34297
diff changeset
1037 if (strtoul(username, NULL, 10) == 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
1038 /*
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1039 * 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
1040 * 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
1041 * 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
1042 */
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1043 if (display_name != NULL) {
25851
f7c0c2664f90 explicit merge of 'f77367f1e87c0098d93902d6982b44f75c1ecacb'
Richard Laager <rlaager@pidgin.im>
parents: 25237 25850
diff changeset
1044 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
1045 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
1046 } else {
6fd7a8e9feda Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <markdoliner@pidgin.im>
parents: 25217
diff changeset
1047 serv_got_alias(session->gc, username,
25851
f7c0c2664f90 explicit merge of 'f77367f1e87c0098d93902d6982b44f75c1ecacb'
Richard Laager <rlaager@pidgin.im>
parents: 25237 25850
diff changeset
1048 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
1049 }
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 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
1052
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1053 /* 3. Update buddy information */
25502
40f87522e2d0 propagate from branch 'im.pidgin.pidgin' (head db75fad3c5a74a5d380131b678995c6a78c140cb)
Paul Aurich <darkrain42@pidgin.im>
parents: 24867 25240
diff changeset
1054 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
1055
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
1056 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
1057 /* Keep track of the user ID across sessions */
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
1058 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
1059
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1060 /* 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
1061 * AvatarURL, Headline, ContactID. */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1062 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
1063
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1064 /* 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
1065 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
1066
898841de866e In msim_uid2username_from_blist(), return a static string as the documentation
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22352
diff changeset
1067 g_free(username);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1068 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1069
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1070 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1071 * 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
1072 * 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
1073 *
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1074 * @return TRUE if added.
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1075 */
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1076 static gboolean
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1077 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
1078 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1079 guint uid;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1080 const gchar *username;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1081
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1082 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
1083 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
1084
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1085 /* 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
1086 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
1087 if (!username) {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1088 gchar *uid_str;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1089
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1090 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
1091 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
1092 "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
1093 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
1094 g_free(uid_str);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1095 } 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
1096 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
1097 }
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1098
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1099 /* 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
1100 * their username. */
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1101 return TRUE;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1102 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1103
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1104 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1105 * Called when contact list is received from server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1106 */
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1107 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
1108 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
1109 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1110 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
1111 gchar *msg;
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1112 guint buddy_count;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1113
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1114 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
1115
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1116 buddy_count = 0;
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1117
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1118 for (body_node = body;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1119 body_node != NULL;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1120 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
1121 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1122 MsimMessageElement *elem;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1123
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1124 elem = (MsimMessageElement *)body_node->data;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1125
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
1126 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
1127 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1128 /* 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
1129 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
1130 ++buddy_count;
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1131 }
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1132 }
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
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1135 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
1136 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
1137 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
1138 "%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
1139 buddy_count),
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);
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1141 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
1142 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
1143 break;
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1144
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1145 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
1146 /* TODO */
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1147 break;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1148
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1149 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
1150 /* 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
1151 * 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
1152 * 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
1153 purple_connection_update_progress(session->gc, _("Connected"), 3, 4);
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
1154 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
1155 break;
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1156 }
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
1157
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1158 msim_msg_free(body);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1159 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1160
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1161 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1162 * Get contact list, calling msim_got_contact_list() with
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1163 * what_to_do_after as user_data gpointer.
25207
40329f88fd18 Minor comment change
Mark Doliner <markdoliner@pidgin.im>
parents: 25200
diff changeset
1164 *
40329f88fd18 Minor comment change
Mark Doliner <markdoliner@pidgin.im>
parents: 25200
diff changeset
1165 * @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
1166 */
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1167 static gboolean
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1168 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
1169 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1170 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
1171 "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
1172 "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
1173 "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
1174 "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
1175 "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
1176 "uid", MSIM_TYPE_INTEGER, session->userid,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1177 "rid", MSIM_TYPE_INTEGER,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1178 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
1179 "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
1180 NULL);
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1181 }
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1182
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1183 /** 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
1184 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
1185 {
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 MsimMessage *body;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1187
25200
791738e352fc Set the display name before marking the connection as "connected."
Mark Doliner <markdoliner@pidgin.im>
parents: 25198
diff changeset
1188 /* 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
1189 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
1190
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1191 body = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1192 "UserID", MSIM_TYPE_INTEGER, session->userid,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1193 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1194
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1195 /* Request IM info about ourself. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1196 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
1197 "persist", MSIM_TYPE_INTEGER, 1,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1198 "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
1199 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1200 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1201 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1202 "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
1203 "UserID", MSIM_TYPE_INTEGER, session->userid,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1204 "body", MSIM_TYPE_DICTIONARY, body,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1205 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1206
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1207 /* Request MySpace info about ourself. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1208 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
1209 "persist", MSIM_TYPE_INTEGER, 1,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1210 "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
1211 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1212 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1213 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1214 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1215 "body", MSIM_TYPE_STRING, g_strdup(""),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1216 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1217
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1218 /* 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
1219 /* TODO: set blocklist */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1220
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1221 /* Notify servers of our current status. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1222 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
1223 msim_set_status(session->account,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1224 purple_account_get_active_status(session->account));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1225
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1226 /* TODO: setinfo */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1227 /*
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1228 body = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1229 "TotalFriends", MSIM_TYPE_INTEGER, 666,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1230 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1231 msim_send(session,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1232 "setinfo", MSIM_TYPE_BOOLEAN, TRUE,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1233 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1234 "info", MSIM_TYPE_DICTIONARY, body,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1235 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1236 */
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 /* Disable due to problems with timeouts. TODO: fix. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1239 #ifdef MSIM_USE_KEEPALIVE
25716
1b5be208d5ba applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents: 25676
diff changeset
1240 purple_timeout_add_seconds(MSIM_KEEPALIVE_INTERVAL_CHECK,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1241 (GSourceFunc)msim_check_alive, session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1242 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1243
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1244 /* Check mail if they want to. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1245 if (purple_account_get_check_mail(session->account)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1246 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
1247 (GSourceFunc)msim_check_inbox, session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1248 msim_check_inbox(session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1249 }
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 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
1252
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1253 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1254 }
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 * 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
1258 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1259 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1260 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1261 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1262 gchar *username, *cv;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1263 gboolean ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1264 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1265
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1266 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1267 cv = msim_msg_get_string(msg, "cv");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1268
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1269 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1270 if (!cv) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1271 /* 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
1272 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1273 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1274 }
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 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1277
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1278 if (user) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1279 user->client_cv = atol(cv);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1280 ret = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1281 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1282 ret = FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1283 }
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 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1286 g_free(cv);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1287
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1288 return ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1289 }
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 #ifdef MSIM_SEND_CLIENT_VERSION
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1292 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1293 * 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
1294 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1295 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1296 msim_send_unofficial_client(MsimSession *session, gchar *username)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1297 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1298 gchar *our_info;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1299 gboolean ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1300
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1301 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
1302 PURPLE_MAJOR_VERSION,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1303 PURPLE_MINOR_VERSION,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1304 PURPLE_MICRO_VERSION,
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1305 MSIM_PROTOCOL_VERSION_STRING);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1306
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1307 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
1308
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1309 return ret;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1310 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1311 #endif
28181
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1312 /**
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1313 * 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
1314 *
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1315 * @param session
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1316 * @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
1317 *
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1318 * @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
1319 */
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1320 static gboolean
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1321 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
1322 /* 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
1323 * 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
1324 * 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
1325 * 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
1326 */
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1327 gchar *ss;
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1328 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
1329 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
1330 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
1331 return TRUE;
da6396cb96d0 Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <darkrain42@pidgin.im>
parents: 28165
diff changeset
1332 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1333
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 * Process incoming status messages.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1336 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1337 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1338 * @param msg Status update message. Caller frees.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1339 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1340 * @return TRUE if successful.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1341 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1342 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1343 msim_incoming_status(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1344 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1345 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1346 GList *list;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1347 gchar *status_headline, *status_headline_escaped;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1348 gint status_code, purple_status_code;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1349 gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1350 gchar *unrecognized_msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1351
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1352 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1353
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1354 /* Helpfully looked up by msim_incoming_resolve() for us. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1355 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1356 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1357
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 gchar *ss;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1360
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1361 ss = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1362 purple_debug_info("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1363 "msim_status: updating status for <%s> to <%s>\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1364 username, ss ? ss : "(NULL)");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1365 g_free(ss);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1366 }
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 /* Example fields:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1369 * |s|0|ss|Offline
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1370 * |s|1|ss|:-)|ls||ip|0|p|0
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1371 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1372 list = msim_msg_get_list(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1373
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1374 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
1375 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
1376 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
1377
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1378 /* Add buddy if not found.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1379 * TODO: Could this be responsible for #3444? */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1380 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1381 if (!user) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1382 PurpleBuddy *buddy;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1383
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1384 purple_debug_info("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1385 "msim_status: making new buddy for %s\n", username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1386 buddy = purple_buddy_new(session->account, username, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1387 purple_blist_add_buddy(buddy, NULL, NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1388
25502
40f87522e2d0 propagate from branch 'im.pidgin.pidgin' (head db75fad3c5a74a5d380131b678995c6a78c140cb)
Paul Aurich <darkrain42@pidgin.im>
parents: 24867 25240
diff changeset
1389 user = msim_get_user_from_buddy(buddy, TRUE);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1390 user->id = msim_msg_get_integer(msg, "f");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1391
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1392 /* Keep track of the user ID across sessions */
25847
a1c8c5a23b6d explicit merge of '077b4d6fc595fc99f5c76572f1b5d2e0343b2563'
Richard Laager <rlaager@pidgin.im>
parents: 25197 25846
diff changeset
1393 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
1394
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1395 msim_store_user_info(session, msg, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1396 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1397 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
1398 }
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 if (status_headline && strcmp(status_headline, "") != 0) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1401 /* 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
1402 * 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
1403 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
1404 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1405 status_headline_escaped = NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1406 }
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 g_free(status_headline);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1409
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1410 /* 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
1411 g_free(user->headline);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1412 user->headline = status_headline_escaped;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1413
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1414 /* Set user status */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1415 switch (status_code) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1416 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1417 purple_status_code = PURPLE_STATUS_OFFLINE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1418 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1419
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1420 case MSIM_STATUS_CODE_ONLINE:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1421 purple_status_code = PURPLE_STATUS_AVAILABLE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1422 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1423
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1424 case MSIM_STATUS_CODE_AWAY:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1425 purple_status_code = PURPLE_STATUS_AWAY;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1426 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1427
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1428 case MSIM_STATUS_CODE_IDLE:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1429 /* Treat idle as an available status. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1430 purple_status_code = PURPLE_STATUS_AVAILABLE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1431 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1432
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1433 default:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1434 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
1435 username, status_code);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1436 purple_status_code = PURPLE_STATUS_AVAILABLE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1437
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1438 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
1439 status_code);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1440 msim_unrecognized(session, NULL, unrecognized_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1441 g_free(unrecognized_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1442 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1443
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1444 purple_protocol_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1445
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1446 if (status_code == MSIM_STATUS_CODE_IDLE) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1447 purple_debug_info("msim", "msim_status: got idle: %s\n", username);
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1448 purple_protocol_got_user_idle(session->account, username, TRUE, 0);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1449 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1450 /* All other statuses indicate going back to non-idle. */
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1451 purple_protocol_got_user_idle(session->account, username, FALSE, 0);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1452 }
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 #ifdef MSIM_SEND_CLIENT_VERSION
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1455 if (status_code == MSIM_STATUS_CODE_ONLINE) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1456 /* 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
1457 msim_send_unofficial_client(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1458 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1459 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1460
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1461 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1462 /* Get information when they come online.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1463 * TODO: periodically refresh?
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1464 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1465 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
1466 msim_lookup_user(session, username, NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1467 }
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 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1470 msim_msg_list_free(list);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1471
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1472 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1473 }
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 * Handle an incoming instant message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1477 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1478 * @param session The session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1479 * @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
1480 * Should also contain username in _username from preprocessing.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1481 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1482 * @return TRUE if successful.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1483 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1484 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
1485 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
1486 {
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1487 gchar *msg_msim_markup, *msg_purple_markup;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1488 gchar *userid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1489 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
1490 PurpleIMConversation *im;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1491
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1492 /* 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
1493 * purple_conversations_find_with_account(). */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1494 userid = msim_msg_get_string(msg, "f");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1495
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1496 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
1497
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1498 if (msim_is_userid(username)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1499 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
1500 username, purple_account_get_username(session->account));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1501 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1502 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1503
34637
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1504 /* 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
1505 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
1506 if (im) {
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1507 /* 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
1508 purple_conversation_set_name(PURPLE_CONVERSATION(im), username);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1509 }
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 msg_msim_markup = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1512 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
1513
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1514 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
1515 g_free(msg_msim_markup);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1516
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1517 time_received = msim_msg_get_integer(msg, "date");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1518 if (!time_received) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1519 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
1520 time_received = time(NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1521 }
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 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
1524
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1525 g_free(msg_purple_markup);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1526
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1527 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1528 }
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 /**
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1531 * Handle an incoming action message or an IM.
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1532 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1533 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1534 * @param msg
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1535 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1536 * @return TRUE if successful.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1537 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1538 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
1539 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
1540 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1541 gchar *msg_text, *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1542 gboolean rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1543
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1544 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1545
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1546 msg_text = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1547 g_return_val_if_fail(msg_text != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1548
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1549 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1550 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1551
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1552 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
1553 "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
1554 msg_text, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1555
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1556 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
1557 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
1558 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1559 } else if (g_str_equal(msg_text, "%stoptyping%")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1560 serv_got_typing_stopped(session->gc, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1561 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1562 } 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
1563 rc = msim_incoming_zap(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1564 } else if (strstr(msg_text, "!!!GroupCount=")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1565 /* 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
1566 * 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
1567 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
1568 "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
1569 "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
1570
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1571 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1572 } else if (strstr(msg_text, "!!!Offline=")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1573 /* 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
1574 * 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
1575 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
1576 "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
1577
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1578 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1579 } else if (msim_msg_get_integer(msg, "aid") != 0) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1580 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
1581 msim_msg_get_integer(msg, "aid"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1582 msim_msg_get_integer(msg, "f"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1583 msg_text);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1584
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1585 rc = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1586 } else {
27246
51c859a176a3 Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents: 27240
diff changeset
1587 rc = msim_incoming_im(session, msg, username);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1588 }
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 g_free(msg_text);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1591 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1592
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1593 return rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1594 }
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 * Process an incoming media (message background?) message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1598 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1599 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1600 msim_incoming_media(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1601 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1602 gchar *username, *text;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1603
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1604 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1605 text = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1606
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1607 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1608 g_return_val_if_fail(text != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1609
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1610 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
1611
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1612 /* 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
1613 * 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
1614 * 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
1615 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
1616 serv_got_typing_stopped(session->gc, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1617
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1618 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1619
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1620 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1621 }
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 * Process an incoming "unofficial client" message. The plugin for
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1625 * Miranda IM sends this message with the plugin information.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1626 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1627 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1628 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1629 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1630 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1631 gchar *username, *client_info;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1632
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1633 username = msim_msg_get_string(msg, "_username");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1634 client_info = msim_msg_get_string(msg, "msg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1635
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1636 g_return_val_if_fail(username != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1637 g_return_val_if_fail(client_info != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1638
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1639 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
1640 username, client_info);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1641
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1642 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1643
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1644 g_return_val_if_fail(user != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1645
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1646 if (user->client_info) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1647 g_free(user->client_info);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1648 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1649 user->client_info = client_info;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1650
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1651 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1652 /* 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
1653
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1654 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1655 }
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 * Handle an incoming buddy message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1659 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1660 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1661 msim_incoming_bm(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1662 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1663 guint bm;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1664
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1665 bm = msim_msg_get_integer(msg, "bm");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1666
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1667 msim_incoming_bm_record_cv(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1668
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1669 switch (bm) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1670 case MSIM_BM_STATUS:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1671 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
1672 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
1673 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
1674 return msim_incoming_action_or_im(session, msg);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1675 case MSIM_BM_MEDIA:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1676 return msim_incoming_media(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1677 case MSIM_BM_UNOFFICIAL_CLIENT:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1678 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
1679 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
1680 return msim_incoming_status_mood(session, msg);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1681 default:
28165
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1682 /*
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1683 * 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
1684 * 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
1685 * 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
1686 * 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
1687 * other message types.
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1688 */
53225dc1075a Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
1689 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
1690 "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
1691 return TRUE;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1692 }
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 * Process the initial server information from the server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1697 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1698 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1699 msim_process_server_info(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1700 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1701 MsimMessage *body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1702
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1703 body = msim_msg_get_dictionary(msg, "body");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1704 g_return_val_if_fail(body != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1705
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1706 /* Example body:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1707 AdUnitRefreshInterval=10.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1708 AlertPollInterval=360.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1709 AllowChatRoomEmoticonSharing=False.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1710 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1711 CurClientVersion=673.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1712 EnableIMBrowse=True.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1713 EnableIMStuffAvatars=False.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1714 EnableIMStuffZaps=False.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1715 MaxAddAllFriends=100.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1716 MaxContacts=1000.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1717 MinClientVersion=594.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1718 MySpaceIM_ENGLISH=78744676.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1719 MySpaceNowTimer=720.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1720 PersistenceDataTimeout=900.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1721 UseWebChallenge=1.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1722 WebTicketGoHome=False
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1723
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1724 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
1725 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1726 purple_debug_info("msim_process_server_info",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1727 "maximum contacts: %d\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1728 msim_msg_get_integer(body, "MaxContacts"));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1729
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1730 session->server_info = body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1731 /* session->server_info freed in msim_session_destroy */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1732
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1733 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1734 }
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 * 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
1738 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1739 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1740 msim_web_challenge(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1741 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1742 /* TODO: web challenge, store token. #2659. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1743 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1744 }
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 * Process a persistance message reply from the server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1748 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1749 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1750 * @param msg Message reply from server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1751 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1752 * @return TRUE if successful.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1753 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1754 * msim_lookup_user sets callback for here
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1755 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1756 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1757 msim_process_reply(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1758 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1759 MSIM_USER_LOOKUP_CB cb;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1760 gpointer data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1761 guint rid, cmd, dsn, lid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1762
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1763 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1764
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1765 msim_store_user_info(session, msg, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1766
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1767 rid = msim_msg_get_integer(msg, "rid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1768 cmd = msim_msg_get_integer(msg, "cmd");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1769 dsn = msim_msg_get_integer(msg, "dsn");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1770 lid = msim_msg_get_integer(msg, "lid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1771
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1772 /* Unsolicited messages */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1773 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1774 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
1775 return msim_process_server_info(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1776 } 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
1777 return msim_web_challenge(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1778 }
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 /* 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
1782 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
1783 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
1784
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1785 if (cb) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1786 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
1787 /* 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
1788 cb(session, msg, data);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1789 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
1790 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
1791 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1792 purple_debug_info("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1793 "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
1794 }
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 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1797 }
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 * Handle an error from the server.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1801 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1802 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1803 * @param msg The message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1804 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1805 * @return TRUE if successfully reported error.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1806 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1807 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1808 msim_error(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1809 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1810 gchar *errmsg, *full_errmsg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1811 guint err;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1812
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1813 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1814
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1815 err = msim_msg_get_integer(msg, "err");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1816 errmsg = msim_msg_get_string(msg, "errmsg");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1817
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1818 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
1819 errmsg ? errmsg : "no 'errmsg' given");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1820
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1821 g_free(errmsg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1822
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1823 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
1824 session->sesskey, full_errmsg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1825
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1826 /* Destroy session if fatal. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1827 if (msim_msg_get(msg, "fatal")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1828 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1829 purple_debug_info("msim", "fatal error, closing\n");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1830
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1831 switch (err) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1832 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1833 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1834 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
1835 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
1836 #ifdef MSIM_MAX_PASSWORD_LENGTH
34025
82ef910cc2be Fix myspace plugin compile.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32681
diff changeset
1837 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
1838 gchar *suggestion;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1839
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1840 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
1841 "%" 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
1842 "maximum length of %d. Please shorten your "
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1843 "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
1844 full_errmsg,
34148
62a874e41930 Merge with default
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34111 33896
diff changeset
1845 (gsize)strlen(purple_connection_get_password(session->gc)),
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1846 MSIM_MAX_PASSWORD_LENGTH);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1847
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1848 /* Replace full_errmsg. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1849 g_free(full_errmsg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1850 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
1851 } else {
f67a2cedf1d5 Show a friendlier error message on myspace when your username or password
Mark Doliner <markdoliner@pidgin.im>
parents: 27351
diff changeset
1852 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
1853 full_errmsg = g_strdup(_("Incorrect username or password"));
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1854 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1855 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1856 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1857 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1858 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1859 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
1860 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
1861 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1862 }
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
1863 purple_connection_error(session->gc, reason, full_errmsg);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1864 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1865 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
1866 }
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 g_free(full_errmsg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1869
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1870 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1871 }
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 * Process a message.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1875 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1876 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1877 * @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
1878 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1879 * @return TRUE if successful. FALSE if processing failed.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1880 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1881 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1882 msim_process(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1883 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1884 g_return_val_if_fail(session != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1885 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1886
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1887 if (msim_msg_get_integer(msg, "lc") == 1) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1888 return msim_login_challenge(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1889 } else if (msim_msg_get_integer(msg, "lc") == 2) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1890 /* return msim_we_are_logged_on(session, msg); */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1891 if (msim_is_username_set(session, msg)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1892 return msim_we_are_logged_on(session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1893 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1894 /* 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
1895 /* 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
1896 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1897 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1898 } else if (msim_msg_get(msg, "bm")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1899 return msim_incoming_bm(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1900 } else if (msim_msg_get(msg, "rid")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1901 return msim_process_reply(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1902 } else if (msim_msg_get(msg, "error")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1903 return msim_error(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1904 } else if (msim_msg_get(msg, "ka")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1905 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1906 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1907 msim_unrecognized(session, msg, "in msim_process");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1908 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1909 }
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 * 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
1914 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1915 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1916 * @param userinfo Response messsage to resolving request.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1917 * @param data MsimMessage *, the message to attach information to.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1918 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1919 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
1920 msim_incoming_resolved(MsimSession *session, const MsimMessage *userinfo,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1921 gpointer data)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1922 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1923 gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1924 MsimMessage *msg, *body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1925
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1926 g_return_if_fail(userinfo != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1927
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1928 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
1929 g_return_if_fail(body != NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1930
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1931 username = msim_msg_get_string(body, "UserName");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1932 g_return_if_fail(username != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1933 /* Note: username will be owned by 'msg' below. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1934
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1935 msg = (MsimMessage *)data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1936 g_return_if_fail(msg != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1937
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1938 /* TODO: more elegant solution than below. attach whole message? */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1939 /* 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
1940 * program (did not come directly from the wire). */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1941 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
1942
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1943 /* TODO: attach more useful information, like ImageURL */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1944
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1945 msim_process(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1946
25324
9a07ddd8cc86 A couple of memory leak fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25240
diff changeset
1947 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
1948 msim_msg_free(body);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1949 }
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 * Preprocess incoming messages, resolving as needed, calling
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1953 * msim_process() when ready to process.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1954 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1955 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1956 * @param msg MsimMessage *, freed by caller.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1957 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1958 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1959 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1960 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1961 g_return_val_if_fail(msg != NULL, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1962
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1963 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
1964 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1965 const gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1966
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1967 /* 'f' = userid message is from, in buddy messages */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1968 uid = msim_msg_get_integer(msg, "f");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1969
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1970 username = msim_uid2username_from_blist(session->account, uid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1971
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1972 if (username) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1973 /* Know username already, use it. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1974 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
1975 username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1976 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
1977 return msim_process(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1978
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1979 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1980 gchar *from;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1981
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1982 /* Send lookup request. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1983 /* 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
1984 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
1985 from = msim_msg_get_string(msg, "f");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1986 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
1987 g_free(from);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1988
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1989 /* indeterminate */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1990 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1991 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1992 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1993 /* Nothing to resolve - send directly to processing. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1994 return msim_process(session, msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
1995 }
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 * Callback when input available.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2000 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2001 * @param gc_uncasted A PurpleConnection pointer.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2002 * @param source File descriptor.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2003 * @param cond PURPLE_INPUT_READ
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2004 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2005 * 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
2006 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2007 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2008 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
2009 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2010 PurpleConnection *gc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2011 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2012 gchar *end;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2013 int n;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2014
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2015 g_return_if_fail(gc_uncasted != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2016 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
2017
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2018 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
2019 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2020
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2021 /* libpurple/eventloop.h only defines these two */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2022 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2023 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
2024 purple_connection_error (gc,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2025 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2026 _("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
2027 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
2028 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2029
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2030 g_return_if_fail(cond == PURPLE_INPUT_READ);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2031
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2032 /* 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
2033 session->last_comm = time(NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2034
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2035 /* If approaching end of buffer, reallocate some more memory. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2036 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2037 purple_debug_info("msim",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2038 "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
2039 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2040 session->rxsize += MSIM_READ_BUF_SIZE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2041 session->rxbuf = g_realloc(session->rxbuf, session->rxsize);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2042
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2043 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2044 }
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 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
2047 session->rxoff, session->rxsize,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2048 MSIM_READ_BUF_SIZE - session->rxoff - 1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2049
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2050 /* 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
2051 * 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
2052 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2053 n = recv(session->fd,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2054 session->rxbuf + session->rxoff,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2055 session->rxsize - session->rxoff - 1, 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2056
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2057 if (n < 0) {
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2058 gchar *tmp;
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2059
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2060 if (errno == EAGAIN)
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2061 /* No worries */
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2062 return;
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2063
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2064 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
2065 g_strerror(errno));
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2066 purple_connection_error(gc,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2067 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2068 g_free(tmp);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2069 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2070 } else if (n == 0) {
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2071 purple_connection_error(gc,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2072 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2073 _("Server closed the connection"));
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2074 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2075 }
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 /* Null terminate */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2078 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
2079 "at n=%d\n", n);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2080 session->rxbuf[session->rxoff + n] = 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2081
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2082 #ifdef MSIM_CHECK_EMBEDDED_NULLS
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2083 /* 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
2084 if (strlen(session->rxbuf + session->rxoff) != n) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2085 /* 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
2086 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
2087 "--null byte encountered?\n",
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2088 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
2089 /*purple_connection_error (gc,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2090 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2091 "Invalid message - null byte on input"); */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2092 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2093 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2094 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2095
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2096 session->rxoff += n;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2097 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
2098
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2099 #ifdef MSIM_DEBUG_RXBUF
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2100 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2101 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2102
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2103 /* Look for \\final\\ end markers. If found, process message. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2104 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2105 MsimMessage *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2106
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2107 #ifdef MSIM_DEBUG_RXBUF
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2108 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
2109 #endif
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2110 *end = 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2111 msg = msim_parse(session->rxbuf);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2112 if (!msg) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2113 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
2114 purple_connection_error (gc,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2115 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2116 _("Unable to parse message"));
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2117 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2118 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2119 /* Process message and then free it (processing function should
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2120 * clone message if it wants to keep it afterwards.) */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2121 if (!msim_preprocess_incoming(session, msg)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2122 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
2123 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2124 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2125 }
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 /* Move remaining part of buffer to beginning. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2128 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2129 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2130 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2131
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2132 /* Clear end of buffer
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2133 * 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
2134 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2135 }
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
2136 }
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
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2138 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2139 * Callback when connected. Sets up input handlers.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2140 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2141 * @param data A PurpleConnection pointer.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2142 * @param source File descriptor.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2143 * @param error_message
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2144 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2145 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2146 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
2147 {
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 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
2149 MsimSession *session;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2150
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2151 g_return_if_fail(data != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2152
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2153 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
2154 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2155
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2156 if (source < 0) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2157 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
2158 error_message);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31739
diff changeset
2159 purple_connection_error (gc,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2160 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2161 g_free(tmp);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2162 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2163 }
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 session->fd = source;
32681
229181e35c4c Myspace: Move "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
2166 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
2167 }
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 * Start logging in to the MSIM servers.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2171 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2172 * @param acct Account information to use to login.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2173 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2174 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2175 msim_login(PurpleAccount *acct)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2176 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2177 PurpleConnection *gc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2178 const gchar *host;
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34567
diff changeset
2179 GSList *deny;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2180 int port;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2181
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2182 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
2183 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
2184
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 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
2186
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2187 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
2188 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
2189 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
2190
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2191 /*
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2192 * 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
2193 * 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
2194 * 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
2195 */
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34567
diff changeset
2196 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
2197 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
2198
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2199 /* 1. connect to server */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2200 purple_connection_update_progress(gc, _("Connecting"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2201 0, /* which connection step this is */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2202 4); /* total number of steps */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2203
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2204 host = purple_account_get_string(acct, "server", MSIM_SERVER);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2205 port = purple_account_get_int(acct, "port", MSIM_PORT);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2206
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2207 /* From purple.sf.net/api:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2208 * """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
2209 * "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
2210 * whether through a proxy or not.""" */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2211
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2212 /* Calls msim_connect_cb when connected. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2213 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
2214 /* 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
2215 * 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
2216 purple_connection_error (gc,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2217 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27634
diff changeset
2218 _("Unable to connect"));
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2219 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2220 }
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
29293
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2223 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
2224 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
2225 {
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2226 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
2227 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
2228 }
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2229
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2230 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2231 * Close the connection.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2232 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2233 * @param gc The connection.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2234 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2235 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2236 msim_close(PurpleConnection *gc)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2237 {
29293
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2238 GSList *buddies;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2239 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2240
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
2241 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
2242 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
2243 }
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
29293
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2245 /*
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2246 * 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
2247 * 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
2248 * 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
2249 */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34696
diff changeset
2250 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
2251 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
2252 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
2253 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
2254 }
f63b05cf6a7c Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <markdoliner@pidgin.im>
parents: 29207
diff changeset
2255
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
2256 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2257 if (session == NULL)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2258 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2259
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
2260 purple_connection_set_protocol_data(gc, NULL);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2261
32681
229181e35c4c Myspace: Move "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
2262 if (session->inpa) {
229181e35c4c Myspace: Move "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
2263 purple_input_remove(session->inpa);
229181e35c4c Myspace: Move "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
2264 session->inpa = 0;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2265 }
25236
31398df36384 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <markdoliner@pidgin.im>
parents: 25232
diff changeset
2266 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
2267 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
2268 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
2269 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2270
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2271 msim_session_destroy(session);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2272 }
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 * 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
2276 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2277 * @param gc Connection.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2278 * @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
2279 * @param message Instant message text to send.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2280 * @param flags Flags.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2281 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2282 * @return 1 if successful or postponed, -1 if failed
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2283 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2284 * 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
2285 * 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
2286 * This function does that by calling msim_postprocess_outgoing().
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2287 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2288 static int
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2289 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
2290 PurpleMessageFlags flags)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2291 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2292 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2293 gchar *message_msim;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2294 int rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2295
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2296 g_return_val_if_fail(gc != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2297 g_return_val_if_fail(who != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2298 g_return_val_if_fail(message != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2299
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2300 /* 'flags' has many options, not used here. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2301
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
2302 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2303
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2304 message_msim = html_to_msim_markup(session, message);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2305
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
2306 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
2307 /* 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
2308 * 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
2309 * 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
2310 * 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
2311 * 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
2312 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2313 rc = 1;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2314 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2315 rc = -1;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2316 }
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 g_free(message_msim);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2319
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2320 return rc;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2321 }
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 * 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
2325 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2326 * @param gc
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2327 * @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
2328 * @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
2329 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2330 * @return 0
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2331 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2332 static unsigned int
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2333 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
2334 PurpleIMTypingState state)
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2335 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2336 const gchar *typing_str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2337 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2338
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2339 g_return_val_if_fail(gc != NULL, 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2340 g_return_val_if_fail(name != NULL, 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2341
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
2342 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
2343
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2344 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
2345 case PURPLE_IM_TYPING:
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2346 typing_str = "%typing%";
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2347 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2348
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
2349 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
2350 case PURPLE_IM_NOT_TYPING:
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2351 default:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2352 typing_str = "%stoptyping%";
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2353 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2354 }
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 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
2357 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
2358 return 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2359 }
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 * 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
2363 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2364 static void
25233
8a3fe5c4e2f4 Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25232
diff changeset
2365 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
2366 gpointer data)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2367 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2368 MsimMessage *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2369 gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2370 PurpleNotifyUserInfo *user_info;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2371 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2372
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2373 /* 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
2374 orthogonality. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2375 msg = (MsimMessage *)data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2376 g_return_if_fail(msg != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2377
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2378 username = msim_msg_get_string(msg, "user");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2379 if (!username) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2380 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
2381 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2382 }
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 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2385 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
2386
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2387 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2388
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2389 if (!user) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2390 /* 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
2391 user = g_new0(MsimUser, 1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2392 user->temporary_user = TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2393 }
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 /* Update user structure with new information */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2396 msim_store_user_info(session, user_info_msg, user);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2397
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2398 user_info = purple_notify_user_info_new();
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2399
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2400 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2401 msim_append_user_info(session, user_info, user, TRUE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2402
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2403 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
2404 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
2405
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2406 purple_notify_user_info_destroy(user_info);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2407
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
2408 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
2409 msim_user_free(user);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2410 g_free(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2411 }
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 * Retrieve a user's profile.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2415 * @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
2416 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2417 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2418 msim_get_info(PurpleConnection *gc, const gchar *username)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2419 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2420 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2421 MsimUser *user;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2422 gchar *user_to_lookup;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2423 MsimMessage *user_msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2424
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2425 g_return_if_fail(gc != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2426 g_return_if_fail(username != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2427
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
2428 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2429
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2430 /* Obtain uid of buddy. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2431 user = msim_find_user(session, username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2432
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2433 /* 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
2434 if (user && user->id) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2435 user_to_lookup = g_strdup_printf("%d", user->id);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2436 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2437 /* 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
2438 user_to_lookup = g_strdup(username);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2439 }
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 /* 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
2442 * 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
2443 * 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
2444 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2445 user_msg = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2446 "user", MSIM_TYPE_STRING, g_strdup(username),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2447 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2448 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
2449
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2450 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
2451
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2452 g_free(user_to_lookup);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2453 }
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 * Set status using an MSIM_STATUS_CODE_* value.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2457 * @param status_code An MSIM_STATUS_CODE_* value.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2458 * @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
2459 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2460 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2461 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
2462 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2463 g_return_if_fail(statstring != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2464
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2465 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
2466 status_code, statstring);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2467
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2468 if (!msim_send(session,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2469 "status", MSIM_TYPE_INTEGER, status_code,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2470 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2471 "statstring", MSIM_TYPE_STRING, statstring,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2472 "locstring", MSIM_TYPE_STRING, g_strdup(""),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2473 NULL))
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2474 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2475 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
2476 }
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 * 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
2481 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2482 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2483 msim_set_status(PurpleAccount *account, PurpleStatus *status)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2484 {
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
2485 PurpleConnection *gc = purple_account_get_connection(account);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2486 PurpleStatusType *type;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2487 PurplePresence *pres;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2488 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2489 guint status_code;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2490 const gchar *message;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2491 gchar *stripped;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2492 gchar *unrecognized_msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2493
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
2494 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2495
34855
9c289149eed4 Global replaces according to GObject status API
Ankit Vani <a@nevitus.org>
parents: 34813
diff changeset
2496 type = purple_status_get_status_type(status);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2497 pres = purple_status_get_presence(status);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2498
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2499 switch (purple_status_type_get_primitive(type)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2500 case PURPLE_STATUS_AVAILABLE:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2501 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
2502 MSIM_STATUS_CODE_ONLINE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2503 status_code = MSIM_STATUS_CODE_ONLINE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2504 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2505
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2506 case PURPLE_STATUS_INVISIBLE:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2507 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
2508 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2509 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2510 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2511
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2512 case PURPLE_STATUS_AWAY:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2513 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
2514 MSIM_STATUS_CODE_AWAY);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2515 status_code = MSIM_STATUS_CODE_AWAY;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2516 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2517
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2518 default:
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2519 purple_debug_info("msim", "msim_set_status: unknown "
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2520 "status interpreting as online");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2521 status_code = MSIM_STATUS_CODE_ONLINE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2522
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2523 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
2524 purple_status_type_get_primitive(type));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2525 msim_unrecognized(session, NULL, unrecognized_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2526 g_free(unrecognized_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2527
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2528 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2529 }
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 message = purple_status_get_attr_string(status, "message");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2532
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2533 /* Status strings are plain text. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2534 if (message != NULL)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2535 stripped = purple_markup_strip_html(message);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2536 else
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2537 stripped = g_strdup("");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2538
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2539 msim_set_status_code(session, status_code, stripped);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2540
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2541 /* 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
2542 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
2543 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
2544 }
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 * Go idle.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2548 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2549 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2550 msim_set_idle(PurpleConnection *gc, int time)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2551 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2552 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2553 PurpleStatus *status;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2554
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2555 g_return_if_fail(gc != NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2556
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
2557 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2558
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2559 status = purple_account_get_active_status(session->account);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2560
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2561 if (time == 0) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2562 /* 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
2563 * 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
2564 * 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
2565 * libpurple says I should be.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2566 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2567 msim_set_status(session->account, status);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2568 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2569 const gchar *message;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2570 gchar *stripped;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2571
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2572 /* 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
2573 * current status.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2574 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2575 message = purple_status_get_attr_string(status, "message");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2576 if (message != NULL)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2577 stripped = purple_markup_strip_html(message);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2578 else
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2579 stripped = g_strdup("");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2580
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2581 /* 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
2582 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
2583 }
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 /**
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2587 * @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
2588 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2589 static gboolean
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2590 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
2591 {
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2592 MsimMessage *msg;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2593 GList *list;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2594
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2595 list = NULL;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2596 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
2597 list = g_list_prepend(list, "<uid>");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2598 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
2599 list = g_list_prepend(list, "<uid>");
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2600 list = g_list_reverse(list);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2601
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2602 msg = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2603 "blocklist", MSIM_TYPE_BOOLEAN, TRUE,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2604 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2605 /* 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
2606 /* "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
2607 "idlist", MSIM_TYPE_LIST, list,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2608 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2609
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2610 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
2611 purple_debug_error("myspace",
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2612 "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
2613 name, allow, block);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2614 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2615 return FALSE;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2616 }
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 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2619
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2620 return TRUE;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2621 }
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 /**
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2624 * Add a buddy to user's buddy list.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2625 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2626 static void
32315
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32262
diff changeset
2627 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
2628 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2629 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2630 MsimMessage *msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2631 MsimMessage *msg_persist;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2632 MsimMessage *body;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2633 const char *name, *gname;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2634
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
2635 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
2636 name = purple_buddy_get_name(buddy);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2637 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
2638
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 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
2640 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
2641
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2642 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
2643 name, gname ? gname : "(no group)");
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2644
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2645 msg = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2646 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2647 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2648 /* "newprofileid" will be inserted here with uid. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2649 "reason", MSIM_TYPE_STRING, g_strdup(""),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2650 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2651
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2652 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
2653 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
2654 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2655 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2656 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2657 msim_msg_free(msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2658
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2659 /* 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
2660 * buddy list since Purple adds it locally. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2661
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2662 body = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2663 "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
2664 "GroupName", MSIM_TYPE_STRING, g_strdup(gname),
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2665 "Position", MSIM_TYPE_INTEGER, 1000,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2666 "Visibility", MSIM_TYPE_INTEGER, 1,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2667 "NickName", MSIM_TYPE_STRING, g_strdup(""),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2668 "NameSelect", MSIM_TYPE_INTEGER, 0,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2669 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2670
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2671 /* TODO: Update blocklist. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2672
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2673 msg_persist = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2674 "persist", MSIM_TYPE_INTEGER, 1,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2675 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2676 "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
2677 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2678 "uid", MSIM_TYPE_INTEGER, session->userid,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2679 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2680 /* TODO: Use msim_new_reply_callback to get rid. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2681 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2682 "body", MSIM_TYPE_DICTIONARY, body,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2683 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2684
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2685 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
2686 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2687 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
2688 msim_msg_free(msg_persist);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2689 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2690 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2691 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
2692
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2693 /* Add to allow list, remove from block list */
25851
f7c0c2664f90 explicit merge of 'f77367f1e87c0098d93902d6982b44f75c1ecacb'
Richard Laager <rlaager@pidgin.im>
parents: 25237 25850
diff changeset
2694 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
2695 }
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 * Remove a buddy from the user's buddy list.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2699 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2700 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2701 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2702 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2703 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2704 MsimMessage *delbuddy_msg;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2705 MsimMessage *persist_msg;
25850
fe954492a9f6 explicit merge of '52b9d9d628964c2d5aa6df8ba17852596e05d24a'
Richard Laager <rlaager@pidgin.im>
parents: 25849 25214
diff changeset
2706 const char *name;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2707
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
2708 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
2709 name = purple_buddy_get_name(buddy);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2710
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2711 delbuddy_msg = msim_msg_new(
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2712 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2713 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2714 /* 'delprofileid' with uid will be inserted here. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2715 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2716
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2717 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
2718 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
2719 msim_msg_free(delbuddy_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2720 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2721 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2722 msim_msg_free(delbuddy_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2723
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2724 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
2725 "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
2726 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2727 "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
2728 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2729 "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
2730 "uid", MSIM_TYPE_INTEGER, session->userid,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2731 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2732 /* <uid> will be replaced by postprocessing */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2733 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2734 NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2735
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23475
diff changeset
2736 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
2737 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
2738 msim_msg_free(persist_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2739 return;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2740 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2741 msim_msg_free(persist_msg);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2742
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2743 /*
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2744 * 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
2745 * 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
2746 * does it)
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2747 */
25856
0cf2cea5048d Compile!
Richard Laager <rlaager@pidgin.im>
parents: 25855
diff changeset
2748 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
2749 purple_notify_error(NULL, NULL,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2750 _("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
2751 return;
9a07ddd8cc86 A couple of memory leak fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25240
diff changeset
2752 }
25855
f2aac5656e7d propagate from branch 'im.pidgin.pidgin' (head f1039393e25a933ea6730a935d0107ed4c78db7c)
Richard Laager <rlaager@pidgin.im>
parents: 25852 25324
diff changeset
2753 msim_buddy_free(buddy);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2754 }
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 * 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
2758 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2759 static void
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2760 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
2761 {
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2762 MsimSession *session;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2763 MsimMessage *msg, *body;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2764
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
2765 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
2766
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2767 /* Remove from buddy list */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2768 msg = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2769 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2770 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2771 /* 'delprofileid' with uid will be inserted here. */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2772 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2773 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
2774 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
2775 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2776
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2777 /* 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
2778 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
2779
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 * 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
2782 * 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
2783 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2784 body = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2785 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2786 "Visibility", MSIM_TYPE_INTEGER, 2,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2787 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2788 msg = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2789 "persist", MSIM_TYPE_INTEGER, 1,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2790 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2791 "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
2792 "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
2793 "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
2794 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2795 "body", MSIM_TYPE_DICTIONARY, body,
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2796 NULL);
25217
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2797 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
2798 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
2799 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2800
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 * 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
2803 * 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
2804 * libpurple's buddy list.
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2805 */
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 * 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
2810 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2811 static void
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2812 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
2813 {
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2814 MsimSession *session;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2815 MsimMessage *msg, *body;
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2816
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
2817 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
2818
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 * 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
2821 * 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
2822 */
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2823 body = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2824 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2825 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2826 msg = msim_msg_new(
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2827 "persist", MSIM_TYPE_INTEGER, 1,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2828 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2829 "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
2830 "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
2831 "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
2832 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2833 "body", MSIM_TYPE_DICTIONARY, body,
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2834 NULL);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2835 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
2836 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
2837 msim_msg_free(msg);
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2838
ea7833f04188 Add support for blocking buddies on MySpace
Mark Doliner <markdoliner@pidgin.im>
parents: 25214
diff changeset
2839 /* 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
2840 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
2841 }
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
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2843 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2844 * 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
2845 * 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
2846 * 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
2847 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2848 * Borrowed this code from oscar_normalize. Added checking for
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2849 * "if userid, get name before normalizing"
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2850 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2851 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
2852 static char normalized[BUF_LEN];
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2853 char *tmp1, *tmp2;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2854 int i, j;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2855 guint id;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2856
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2857 g_return_val_if_fail(str != NULL, NULL);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2858
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2859 if (msim_is_userid(str)) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2860 /* 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
2861 const char *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2862
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2863 /* 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
2864 if (!account || !purple_account_get_connection(account))
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2865 return str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2866
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2867 id = atol(str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2868 username = msim_uid2username_from_blist((PurpleAccount *)account, id);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2869 if (!username) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2870 /* 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
2871 /* 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
2872 * 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
2873 * 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
2874 * the result immediately. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2875 strncpy(normalized, str, BUF_LEN);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2876 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2877 strncpy(normalized, username, BUF_LEN);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2878 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2879 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2880 /* Have username. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2881 strncpy(normalized, str, BUF_LEN);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2882 }
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 /* Strip spaces. */
25355
c027c4bb9ebe Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25324
diff changeset
2885 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
2886 if (normalized[j] != ' ')
c027c4bb9ebe Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25324
diff changeset
2887 normalized[i++] = normalized[j];
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2888 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2889 normalized[i] = '\0';
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2890
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2891 /* Lowercase and perform UTF-8 normalization. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2892 tmp1 = g_utf8_strdown(normalized, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2893 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2894 g_snprintf(normalized, sizeof(normalized), "%s", tmp2);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2895 g_free(tmp2);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2896 g_free(tmp1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2897
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2898 /* 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
2899 * 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
2900 * as 'MsIm PrPl' in the official client.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2901 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2902 * TODO: file a ticket to add this enhancement.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2903 */
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 return normalized;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2906 }
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 * Return whether the buddy can be messaged while offline.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2910 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2911 * 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
2912 * messages.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2913 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2914 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2915 msim_offline_message(const PurpleBuddy *buddy)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2916 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2917 return TRUE;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2918 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2919
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2920 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2921 * 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
2922 *
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36541
diff changeset
2923 * Used in protocol struct, so that plugins can have the most possible
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2924 * 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
2925 * 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
2926 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2927 * @param gc PurpleConnection
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2928 * @param buf Buffer to send
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2929 * @param total_bytes Size of buffer to send
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2930 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2931 * @return Bytes successfully sent, or -1 on error.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2932 */
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
2933 /*
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 * 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
2935 * 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
2936 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2937 static int
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2938 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
2939 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2940 int total_bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2941 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2942
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2943 g_return_val_if_fail(gc != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2944 g_return_val_if_fail(buf != NULL, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2945 g_return_val_if_fail(total_bytes >= 0, -1);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2946
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
2947 session = purple_connection_get_protocol_data(gc);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2948
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2949 /* 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
2950 total_bytes_sent = 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2951 do {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2952 int bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2953
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2954 bytes_sent = send(session->fd, buf + total_bytes_sent,
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2955 total_bytes - total_bytes_sent, 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2956
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2957 if (bytes_sent < 0) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2958 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
2959 buf, g_strerror(errno));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2960 return total_bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2961 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2962 total_bytes_sent += bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2963
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2964 } while(total_bytes_sent < total_bytes);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2965
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2966 return total_bytes_sent;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2967 }
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 * 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
2971 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2972 * @param session
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2973 * @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
2974 *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2975 * @return TRUE if succeeded, FALSE if not.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2976 *
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 gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2979 msim_send_raw(MsimSession *session, const gchar *msg)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2980 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2981 size_t len;
34304
faf0414a8b51 Fix most of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34297
diff changeset
2982 int sent;
25197
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
34304
faf0414a8b51 Fix most of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34297
diff changeset
2989 sent = msim_send_really_raw(session->gc, msg, len);
faf0414a8b51 Fix most of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34297
diff changeset
2990 return sent > 0 && (size_t)sent == len;
25197
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
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2993 static GHashTable *
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2994 msim_get_account_text_table(PurpleAccount *unused)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2995 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2996 GHashTable *table;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2997
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
2998 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
2999
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3000 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
3001
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3002 return table;
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 /**
36526
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3006 * Called when friends have been imported to buddy list on server.
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3007 */
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3008 static void
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3009 msim_import_friends_cb(MsimSession *session, const MsimMessage *reply, gpointer user_data)
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3010 {
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3011 MsimMessage *body;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3012 gchar *completed;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3013
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3014 /* Check if the friends were imported successfully. */
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3015 body = msim_msg_get_dictionary(reply, "body");
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3016 g_return_if_fail(body != NULL);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3017 completed = msim_msg_get_string(body, "Completed");
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3018 msim_msg_free(body);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3019 g_return_if_fail(completed != NULL);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3020 if (!g_str_equal(completed, "True"))
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3021 {
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3022 purple_debug_info("msim_import_friends_cb",
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3023 "failed to import friends: %s", completed);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3024 purple_notify_error(session->account, _("Add friends from MySpace.com"),
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3025 _("Importing friends failed"), NULL);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3026 g_free(completed);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3027 return;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3028 }
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3029 g_free(completed);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3030
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3031 purple_debug_info("msim_import_friends_cb",
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3032 "added friends to server-side buddy list, requesting new contacts from server");
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3033
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3034 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3035
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3036 /* TODO: show, X friends have been added */
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3037 }
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3038
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3039 /**
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3040 * Import friends from myspace.com.
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3041 */
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3042 static void msim_import_friends(PurpleProtocolAction *action)
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3043 {
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3044 PurpleConnection *gc;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3045 MsimSession *session;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3046 gchar *group_name;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3047
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3048 gc = action->connection;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3049 session = purple_connection_get_protocol_data(gc);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3050
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3051 group_name = "MySpace Friends";
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3052
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3053 g_return_if_fail(msim_send(session,
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3054 "persist", MSIM_TYPE_INTEGER, 1,
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3055 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3056 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT,
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3057 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN,
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3058 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID,
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3059 "uid", MSIM_TYPE_INTEGER, session->userid,
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3060 "rid", MSIM_TYPE_INTEGER,
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3061 msim_new_reply_callback(session, msim_import_friends_cb, NULL),
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3062 "body", MSIM_TYPE_STRING,
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3063 g_strdup_printf("GroupName=%s", group_name),
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3064 NULL));
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3065 }
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3066
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3067 /**
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3068 * Actions menu for account.
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3069 */
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3070 static GList *
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3071 msim_get_actions(PurpleConnection *gc)
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3072 {
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3073 GList *menu;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3074 PurpleProtocolAction *act;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3075
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3076 menu = NULL;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3077
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3078 #if 0
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3079 /* TODO: find out how */
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3080 act = purple_protocol_action_new(_("Find people..."), msim_);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3081 menu = g_list_append(menu, act);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3082
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3083 act = purple_protocol_action_new(_("Change IM name..."), NULL);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3084 menu = g_list_append(menu, act);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3085 #endif
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3086
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3087 act = purple_protocol_action_new(_("Add friends from MySpace.com"), msim_import_friends);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3088 menu = g_list_append(menu, act);
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3089
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3090 return menu;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3091 }
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3092
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3093 #ifdef MSIM_SELF_TEST
25197
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 * Test functions.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3096 * 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
3097 * 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
3098 * how msimprpl is architected.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3099 */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3100
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3101 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3102 * Test MsimMessage for basic functionality.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3103 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3104 static int
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3105 msim_test_msg(void)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3106 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3107 MsimMessage *msg, *msg_cloned, *msg2;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3108 GList *list;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3109 gchar *packed, *packed_expected, *packed_cloned;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3110 guint failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3111
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3112 failures = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3113
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3114 purple_debug_info("msim", "\n\nTesting MsimMessage\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3115 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
3116
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3117 /* 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
3118 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
3119 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
3120 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
3121 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
3122 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
3123 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
3124 msim_msg_dump("msg debug str=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3125 packed = msim_msg_pack(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3126
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3127 purple_debug_info("msim", "msg packed=%s\n", packed);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3128
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3129 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1"
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3130 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\";
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3131
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
3132 if (!g_str_equal(packed, packed_expected)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3133 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
3134 ++failures, packed, packed_expected);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3135 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3136
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3137
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3138 msg_cloned = msim_msg_clone(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3139 packed_cloned = msim_msg_pack(msg_cloned);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3140
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3141 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
3142 if (!g_str_equal(packed, packed_cloned)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3143 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
3144 ++failures, packed_cloned, packed);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3145 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3146
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3147 g_free(packed);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3148 g_free(packed_cloned);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3149 msim_msg_free(msg_cloned);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3150 msim_msg_free(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3151
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3152 /* Try some of the more advanced functionality */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3153 list = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3154
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3155 list = g_list_prepend(list, "item3");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3156 list = g_list_prepend(list, "item2");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3157 list = g_list_prepend(list, "item1");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3158 list = g_list_prepend(list, "item0");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3159
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3160 msg = msim_msg_new(NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3161 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
3162 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
3163 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
3164 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
3165 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
3166
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3167 msim_msg_dump("msg with list=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3168 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
3169
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3170 msg2 = msim_msg_new(NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3171 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
3172 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
3173 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
3174 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
3175
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3176 msim_msg_free(msg2);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3177
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3178 return failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3179 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3180
25197
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 * Test protocol-level escaping/unescaping.
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3183 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3184 static int
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3185 msim_test_escaping(void)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3186 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3187 guint failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3188 gchar *raw, *escaped, *unescaped, *expected;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3189
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3190 failures = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3191
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3192 purple_debug_info("msim", "\n\nTesting escaping\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3193
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3194 raw = "hello/world\\hello/world";
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3195
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3196 escaped = msim_escape(raw);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3197 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
3198 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
3199 if (!g_str_equal(escaped, expected)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3200 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
3201 ++failures, escaped, expected);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3202 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3203
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 unescaped = msim_unescape(escaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3206 g_free(escaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3207 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
3208 if (!g_str_equal(raw, unescaped)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3209 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
3210 ++failures, raw, unescaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3211 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3212
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3213 return failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3214 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3215
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3216 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3217 msim_test_all(void)
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3218 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3219 guint failures;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3220
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3221 failures = 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3222 failures += msim_test_msg();
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3223 failures += msim_test_escaping();
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3224
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3225 if (failures) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3226 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
3227 } else {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3228 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
3229 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3230 exit(0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3231 }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3232 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3233
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3234 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3235 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
3236 */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3237 static void
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3238 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
3239 {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3240 MsimMessage *body;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3241 gchar *username;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3242
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3243 body = msim_msg_get_dictionary(userinfo, "body");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3244 username = msim_msg_get_string(body, "UserName");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3245 msim_msg_free(body);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3246
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3247 if (!username) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3248 guint uid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3249
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3250 uid = msim_msg_get_integer(userinfo, "UserID");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3251 g_return_if_fail(uid != 0);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3252
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3253 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
3254 }
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3255
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3256 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
3257
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3258 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
3259 }
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3260
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3261 /* 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
3262 * 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
3263 * looked up if possible? */
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3264
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3265 /**
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3266 * 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
3267 */
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3268 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
3269 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
3270 {
34637
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3271 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
3272 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
3273 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
3274
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3275 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
3276 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
3277 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
3278
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3279 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
3280 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
3281
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3282 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
3283 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
3284
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3285 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
3286 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3287
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3288
34637
9cdc9e6eecce Refactored mxit and myspace protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3289 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
3290 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
3291 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
3292 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
3293 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3294
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3295 /* 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
3296 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
3297
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3298 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
3299 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3300
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3301 static gboolean
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3302 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
3303 {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3304 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
3305 PurpleConnection *gc;
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3306 MsimSession *session;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3307 GList *l;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3308 gchar *uid_str, *cid_str;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3309 guint uid, cid;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3310
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3311 if (g_ascii_strcasecmp(proto, "myim"))
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3312 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3313
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3314 /* Parameters are case-insensitive. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3315 uid_str = g_hash_table_lookup(params, "uid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3316 cid_str = g_hash_table_lookup(params, "cid");
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3317
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3318 uid = uid_str ? atol(uid_str) : 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3319 cid = cid_str ? atol(cid_str) : 0;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3320
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3321 /* Need a contact. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3322 g_return_val_if_fail(cid != 0, FALSE);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3323
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3324 /* 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
3325 * 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
3326
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3327 /* 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
3328 * 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
3329 * 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
3330 * 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
3331 cid_str = g_strdup_printf("%d", cid);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3332
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3333
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3334 /* 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
3335 account = NULL;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3336 l = purple_accounts_get_all();
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3337 while (l) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3338 if (purple_account_is_connected(l->data) &&
34304
faf0414a8b51 Fix most of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34297
diff changeset
3339 (uid == 0 || (guint)purple_account_get_int(l->data, "uid", 0) == uid)) {
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3340 account = l->data;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3341 break;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3342 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3343 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
3344 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3345
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3346 if (!account) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3347 purple_notify_error(NULL, _("myim URL handler"),
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3348 _("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
3349 _("Enable the proper MySpaceIM account and try again."));
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3350 g_free(cid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3351 return FALSE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3352 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3353
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
3354 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
3355 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
3356 if (session == NULL) {
c7d516ebb630 myspace.c: Fix memleaks in msim_uri_handler
Niels Thykier <niels@thykier.net>
parents: 32681
diff changeset
3357 g_free(cid_str);
c7d516ebb630 myspace.c: Fix memleaks in msim_uri_handler
Niels Thykier <niels@thykier.net>
parents: 32681
diff changeset
3358 return FALSE;
c7d516ebb630 myspace.c: Fix memleaks in msim_uri_handler
Niels Thykier <niels@thykier.net>
parents: 32681
diff changeset
3359 }
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3360
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3361 /* 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
3362 * adding functions. */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3363
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3364 /* myim:sendIM?uID=USERID&cID=CONTACTID */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3365 if (!g_ascii_strcasecmp(cmd, "sendIM")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3366 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
3367 g_free(cid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3368 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3369
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3370 /* myim:addContact?uID=USERID&cID=CONTACTID */
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3371 } else if (!g_ascii_strcasecmp(cmd, "addContact")) {
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3372 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
3373 g_free(cid_str);
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3374 return TRUE;
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3375 }
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3376
33691
c7d516ebb630 myspace.c: Fix memleaks in msim_uri_handler
Niels Thykier <niels@thykier.net>
parents: 32681
diff changeset
3377 g_free(cid_str);
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3378 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
3379 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3380
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3381 /**
36586
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3382 * Protocol attributes and options.
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3383 */
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3384 static void
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3385 msim_protocol_base_init(MySpaceProtocolClass *klass)
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3386 {
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3387 PurpleProtocolClass *proto_class = PURPLE_PROTOCOL_CLASS(klass);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3388 PurpleAccountOption *option;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3389
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3390 proto_class->id = MSIM_ID;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3391 proto_class->name = MSIM_NAME;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3392 proto_class->options = OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3393 | OPT_PROTO_MAIL_CHECK;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3394 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3395 /* TODO: eventually should add icon_spec */
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3396
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3397 /* TODO: default to automatically try different ports. Make the user be
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3398 * able to set the first port to try (like LastConnectedPort in Windows client). */
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3399 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3400 proto_class->protocol_options = g_list_append(proto_class->protocol_options, option);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3401
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3402 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3403 proto_class->protocol_options = g_list_append(proto_class->protocol_options, option);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3404
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3405 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3406 option = purple_account_option_bool_new(_("Show display name in status text"), "show_display_name", TRUE);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3407 proto_class->protocol_options = g_list_append(proto_class->protocol_options, option);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3408
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3409 option = purple_account_option_bool_new(_("Show headline in status text"), "show_headline", TRUE);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3410 proto_class->protocol_options = g_list_append(proto_class->protocol_options, option);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3411 #endif
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3412
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3413 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3414 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", TRUE);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3415 proto_class->protocol_options = g_list_append(proto_class->protocol_options, option);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3416 #endif
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3417
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3418 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3419 option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3420 proto_class->protocol_options = g_list_append(proto_class->protocol_options, option);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3421
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3422 option = purple_account_option_int_new(_("Base font size (points)"), "base_font_size", MSIM_BASE_FONT_POINT_SIZE);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3423 proto_class->protocol_options = g_list_append(proto_class->protocol_options, option);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3424 #endif
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3425 }
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3426
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3427 /**
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3428 * Callbacks called by Purple, to access this protocol.
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3429 */
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3430 static void
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3431 msim_protocol_interface_init(PurpleProtocolInterface *iface)
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3432 {
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3433 iface->get_actions = msim_get_actions;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3434 iface->list_icon = msim_list_icon;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3435 iface->status_text = msim_status_text;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3436 iface->tooltip_text = msim_tooltip_text;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3437 iface->status_types = msim_status_types;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3438 iface->blist_node_menu = msim_blist_node_menu;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3439 iface->login = msim_login;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3440 iface->close = msim_close;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3441 iface->send_im = msim_send_im;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3442 iface->send_typing = msim_send_typing;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3443 iface->get_info = msim_get_info;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3444 iface->set_status = msim_set_status;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3445 iface->set_idle = msim_set_idle;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3446 iface->add_buddy = msim_add_buddy;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3447 iface->remove_buddy = msim_remove_buddy;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3448 iface->add_deny = msim_add_deny;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3449 iface->rem_deny = msim_rem_deny;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3450 iface->buddy_free = msim_buddy_free;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3451 iface->normalize = msim_normalize;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3452 iface->offline_message = msim_offline_message;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3453 iface->send_raw = msim_send_really_raw;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3454 iface->send_attention = msim_send_attention;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3455 iface->get_attention_types = msim_attention_types;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3456 iface->get_account_text_table = msim_get_account_text_table;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3457 }
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3458
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3459 static void msim_protocol_base_finalize(MySpaceProtocolClass *klass) { }
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3460
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3461 /**
36526
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3462 * Query the plugin
25197
077b4d6fc595 No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents: 25195
diff changeset
3463 */
36526
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3464 static PurplePluginInfo *
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3465 plugin_query(GError **error)
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3466 {
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3467 return purple_plugin_info_new(
36586
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3468 "id", MSIM_ID,
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3469 "name", MSIM_NAME,
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3470 "version", MSIM_PROTOCOL_VERSION_STRING,
36526
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3471 "category", "Protocol",
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3472 "summary", "MySpaceIM Protocol Plugin",
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3473 "description", "MySpaceIM Protocol Plugin",
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3474 "author", "Jeff Connelly <jeff2@soc.pidgin.im>",
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3475 "website", "https://developer.pidgin.im/wiki/MySpaceIM/",
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3476 "abi-version", PURPLE_ABI_VERSION,
36536
07f8c9889257 Added flags to all prpls
Ankit Vani <a@nevitus.org>
parents: 36526
diff changeset
3477 "flags", GPLUGIN_PLUGIN_INFO_FLAGS_INTERNAL |
07f8c9889257 Added flags to all prpls
Ankit Vani <a@nevitus.org>
parents: 36526
diff changeset
3478 GPLUGIN_PLUGIN_INFO_FLAGS_LOAD_ON_QUERY,
36526
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3479 NULL
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3480 );
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3481 }
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3482
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3483 /**
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3484 * Load the plugin.
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3485 */
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3486 static gboolean
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3487 plugin_load(PurplePlugin *plugin, GError **error)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3488 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3489 #ifdef MSIM_SELF_TEST
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3490 msim_test_all();
36586
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3491 g_set_error(error, MSIM_DOMAIN, 0, _("Finished MySpaceIM self test"));
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3492 return FALSE;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3493 #endif /* MSIM_SELF_TEST */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3494
36586
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3495 my_protocol = purple_protocols_add(MSIM_TYPE_PROTOCOL);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3496 if (!my_protocol) {
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3497 g_set_error(error, MSIM_DOMAIN, 0, _("Failed to add myspace protocol"));
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3498 return FALSE;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3499 }
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3500
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3501 purple_signal_connect(purple_get_core(), "uri-handler", my_protocol,
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3502 PURPLE_CALLBACK(msim_uri_handler), NULL);
36526
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3503
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3504 return TRUE;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3505 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3506
36526
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3507 /**
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3508 * Unload the plugin.
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3509 */
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3510 static gboolean
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3511 plugin_unload(PurplePlugin *plugin, GError **error)
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3512 {
36586
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3513 if (!purple_protocols_remove(my_protocol)) {
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3514 g_set_error(error, MSIM_DOMAIN, 0, _("Failed to remove myspace protocol"));
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3515 return FALSE;
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3516 }
36526
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3517
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3518 return TRUE;
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3519 }
44cfe9e574d8 Refactored myspace to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
3520
36586
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3521 PURPLE_PROTOCOL_DEFINE (MySpaceProtocol, msim_protocol);
fbd81e3753ef Refactored myspace to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
3522 PURPLE_PLUGIN_INIT (myspace, plugin_query, plugin_load, plugin_unload);

mercurial