libpurple/protocols/myspace/myspace.c

Tue, 27 Aug 2013 04:30:39 +0530

author
Ankit Vani <a@nevitus.org>
date
Tue, 27 Aug 2013 04:30:39 +0530
branch
soc.2013.gobjectification.plugins
changeset 36583
0582190c9382
parent 36574
e9b59dd16117
parent 34894
df5ed3731148
child 36586
fbd81e3753ef
permissions
-rw-r--r--

Merged soc.2013.gobjectification branch

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

mercurial