annotate libpurple/protocols/myspace/myspace.c @ 28977:e137c1fc216a

Check if memory has been freed by looking at its contents does not work 100% of the time. If any of these functions are called with an invalid object, then the correct fix is to determine why the function was called and prevent it from being called.
author Mark Doliner <mark@kingant.net>
date Fri, 05 Feb 2010 01:18:18 +0000
parents 52fffd4cdd62
children 3e99c4eab63b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2 * MySpaceIM Protocol Plugin
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
4 * \author Jeff Connelly
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
5 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
6 * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
7 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
8 * Based on Purple's "C Plugin HOWTO" hello world example.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
9 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
10 * Code also drawn from mockprpl:
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
11 * http://snarfed.org/space/purple+mock+protocol+plugin
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
12 * Copyright (C) 2004-2007, Ryan Barrett <mockprpl@ryanb.org>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
13 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
14 * and some constructs also based on existing Purple plugins, which are:
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
15 * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
16 * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
17 * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
18 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
19 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
20 * This program is free software; you can redistribute it and/or modify
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
21 * it under the terms of the GNU General Public License as published by
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
22 * the Free Software Foundation; either version 2 of the License, or
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
23 * (at your option) any later version.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
24 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
25 * This program is distributed in the hope that it will be useful,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
28 * GNU General Public License for more details.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
29 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
30 * You should have received a copy of the GNU General Public License
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
31 * along with this program; if not, write to the Free Software
19681
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19661
diff changeset
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
33 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
34
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
35 #define PURPLE_PLUGIN
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
36
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
37 #include "myspace.h"
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
38
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
39 #include "privacy.h"
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
40
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
41 static void msim_set_status(PurpleAccount *account, PurpleStatus *status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
42 static void msim_set_idle(PurpleConnection *gc, int time);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
43
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
44 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
45 * Perform actual postprocessing on a message, adding userid as specified.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
46 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
47 * @param msg The message to postprocess.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
48 * @param uid_before Name of field where to insert new field before, or NULL for end.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
49 * @param uid_field_name Name of field to add uid to.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
50 * @param uid The userid to insert.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
51 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
52 * If the field named by uid_field_name already exists, then its string contents will
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
53 * be used for the field, except "<uid>" will be replaced by the userid.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
54 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
55 * If the field named by uid_field_name does not exist, it will be added before the
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
56 * field named by uid_before, as an integer, with the userid.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
57 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
58 * Does not handle sending, or scheduling userid lookup. For that, see msim_postprocess_outgoing().
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
59 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
60 static MsimMessage *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
61 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
62 const gchar *uid_field_name, guint uid)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
63 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
64 MsimMessageElement *elem;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
65
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
66 /* First, check - if the field already exists, replace <uid> within it */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
67 if ((elem = msim_msg_get(msg, uid_field_name)) != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
68 gchar *fmt_string;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
69 gchar *uid_str, *new_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
70
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
71 /* Get the packed element, flattening it. This allows <uid> to be
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
72 * replaced within nested data structures, since the replacement is done
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
73 * on the linear, packed data, not on a complicated data structure.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
74 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
75 * For example, if the field was originally a dictionary or a list, you
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
76 * would have to iterate over all the items in it to see what needs to
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
77 * be replaced. But by packing it first, the <uid> marker is easily replaced
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
78 * just by a string replacement.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
79 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
80 fmt_string = msim_msg_pack_element_data(elem);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
81
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
82 uid_str = g_strdup_printf("%d", uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
83 new_str = purple_strreplace(fmt_string, "<uid>", uid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
84 g_free(uid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
85 g_free(fmt_string);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
86
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
87 /* Free the old element data */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
88 msim_msg_free_element_data(elem->data);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
89
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
90 /* Replace it with our new data */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
91 elem->data = new_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
92 elem->type = MSIM_TYPE_RAW;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
93
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
94 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
95 /* Otherwise, insert new field into outgoing message. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
96 msg = msim_msg_insert_before(msg, uid_before, uid_field_name, MSIM_TYPE_INTEGER, GUINT_TO_POINTER(uid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
97 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
98
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
99 return msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
100 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
101
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
102 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
103 * Callback for msim_postprocess_outgoing() to add a userid to a message, and send it (once receiving userid).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
104 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
105 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
106 * @param userinfo The user information reply message, containing the user ID
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
107 * @param data The message to postprocess and send.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
108 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
109 * The data message should contain these fields:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
110 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
111 * _uid_field_name: string, name of field to add with userid from userinfo message
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
112 * _uid_before: string, name of field before field to insert, or NULL for end
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
113 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
114 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
115 msim_postprocess_outgoing_cb(MsimSession *session, const MsimMessage *userinfo,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
116 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
117 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
118 gchar *uid_field_name, *uid_before, *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
119 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
120 MsimMessage *msg, *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
121
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
122 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
123
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
124 /* Obtain userid from userinfo message. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
125 body = msim_msg_get_dictionary(userinfo, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
126 g_return_if_fail(body != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
127
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
128 uid = msim_msg_get_integer(body, "UserID");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
129 msim_msg_free(body);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
130
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
131 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
132
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
133 if (!uid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
134 gchar *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
135
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
136 msg = g_strdup_printf(_("No such user: %s"), username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
137 if (!purple_conv_present_error(username, session->account, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
138 purple_notify_error(NULL, NULL, _("User lookup"), msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
139 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
140
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
141 g_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
142 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
143 /* TODO: free
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
144 * msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
145 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
146 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
147 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
148
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
149 uid_field_name = msim_msg_get_string(msg, "_uid_field_name");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
150 uid_before = msim_msg_get_string(msg, "_uid_before");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
151
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
152 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
153
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
154 /* Send */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
155 if (!msim_msg_send(session, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
156 msim_msg_dump("msim_postprocess_outgoing_cb: sending failed for message: %s\n", msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
157 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
158
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
159
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
160 /* Free field names AFTER sending message, because MsimMessage does NOT copy
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
161 * field names - instead, treats them as static strings (which they usually are).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
162 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
163 g_free(uid_field_name);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
164 g_free(uid_before);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
165 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
166 /* TODO: free
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
167 * msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
168 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
169 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
170
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
171 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
172 * Postprocess and send a message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
173 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
174 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
175 * @param msg Message to postprocess. Will NOT be freed.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
176 * @param username Username to resolve. Assumed to be a static string (will not be freed or copied).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
177 * @param uid_field_name Name of new field to add, containing uid of username. Static string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
178 * @param uid_before Name of existing field to insert username field before. Static string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
179 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
180 * @return TRUE if successful.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
181 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
182 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
183 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
184 const gchar *username, const gchar *uid_field_name,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
185 const gchar *uid_before)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
186 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
187 PurpleBuddy *buddy;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
188 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
189 gboolean rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
190
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
191 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
192
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
193 /* Store information for msim_postprocess_outgoing_cb(). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
194 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
195 msg = msim_msg_append(msg, "_uid_field_name", MSIM_TYPE_STRING, g_strdup(uid_field_name));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
196 msg = msim_msg_append(msg, "_uid_before", MSIM_TYPE_STRING, g_strdup(uid_before));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
197
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
198 /* First, try the most obvious. If numeric userid is given, use that directly. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
199 if (msim_is_userid(username)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
200 uid = atol(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
201 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
202 /* Next, see if on buddy list and know uid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
203 buddy = purple_find_buddy(session->account, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
204 if (buddy) {
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
205 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
206 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
207 uid = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
208 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
209
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
210 if (!buddy || !uid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
211 /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
212 purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
213 username ? username : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
214 msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
215 return TRUE; /* not sure of status yet - haven't sent! */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
216 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
217 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
218
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
219 /* Already have uid, postprocess and send msg immediately. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
220 purple_debug_info("msim", "msim_postprocess_outgoing: found username %s has uid %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
221 username ? username : "(NULL)", uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
222
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
223 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
224
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
225 rc = msim_msg_send(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
226
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
227 /* TODO: free
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
228 * msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
229 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
230
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
231 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
232 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
233
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
234 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
235 * Send a buddy message of a given type.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
236 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
237 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
238 * @param who Username to send message to.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
239 * @param text Message text to send. Not freed; will be copied.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
240 * @param type A MSIM_BM_* constant.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
241 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
242 * @return TRUE if success, FALSE if fail.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
243 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
244 * Buddy messages ('bm') include instant messages, action messages, status messages, etc.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
245 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
246 gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
247 msim_send_bm(MsimSession *session, const gchar *who, const gchar *text,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
248 int type)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
249 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
250 gboolean rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
251 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
252 const gchar *from_username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
253
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
254 g_return_val_if_fail(who != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
255 g_return_val_if_fail(text != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
256
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
257 from_username = session->account->username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
258
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
259 g_return_val_if_fail(from_username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
260
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
261 purple_debug_info("msim", "sending %d message from %s to %s: %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
262 type, from_username, who, text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
263
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
264 msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
265 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
266 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
267 /* 't' will be inserted here */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
268 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
269 "msg", MSIM_TYPE_STRING, g_strdup(text),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
270 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
271
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
272 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
273
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
274 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
275
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
276 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
277 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
278
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
279 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
280 * Lookup a username by userid, from buddy list.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
281 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
282 * @param wanted_uid
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
283 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
284 * @return Username of wanted_uid, if on blist, or NULL.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
285 * This is a static string, so don't free it. Copy it if needed.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
286 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
287 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
288 static const gchar *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
289 msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
290 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
291 GSList *buddies, *cur;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
292 const gchar *ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
293
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
294 buddies = purple_find_buddies(account, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
295
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
296 if (!buddies)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
297 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
298 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
299 return NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
300 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
301
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
302 ret = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
303
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
304 for (cur = buddies; cur != NULL; cur = g_slist_next(cur))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
305 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
306 PurpleBuddy *buddy;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
307 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
308 const gchar *name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
309
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
310 /* See finch/gnthistory.c */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
311 buddy = cur->data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
312
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
313 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
314 name = purple_buddy_get_name(buddy);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
315
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
316 if (uid == wanted_uid)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
317 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
318 ret = name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
319 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
320 }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
321 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
322
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
323 g_slist_free(buddies);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
324 return ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
325 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
326
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
327 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
328 * Setup a callback, to be called when a reply is received with the returned rid.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
329 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
330 * @param cb The callback, an MSIM_USER_LOOKUP_CB.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
331 * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
332 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
333 * @return The request/reply ID, used to link replies with requests, or -1.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
334 * Put the rid in your request, 'rid' field.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
335 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
336 * TODO: Make more generic and more specific:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
337 * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
338 * 2) data - make it an MsimMessage?
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
339 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
340 guint
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
341 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
342 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
343 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
344 guint rid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
345
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
346 rid = session->next_rid++;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
347
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
348 g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
349 g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
350
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
351 return rid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
352 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
353
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
354 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
355 * Return the icon name for a buddy and account.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
356 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
357 * @param acct The account to find the icon for, or NULL for protocol icon.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
358 * @param buddy The buddy to find the icon for, or NULL for the account icon.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
359 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
360 * @return The base icon name string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
361 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
362 static const gchar *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
363 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
364 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
365 /* Use a MySpace icon submitted by hbons at
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
366 * http://developer.pidgin.im/wiki/MySpaceIM. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
367 return "myspace";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
368 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
369
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
370 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
371 * Obtain the status text for a buddy.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
372 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
373 * @param buddy The buddy to obtain status text for.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
374 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
375 * @return Status text, or NULL if error. Caller g_free()'s.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
376 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
377 static char *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
378 msim_status_text(PurpleBuddy *buddy)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
379 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
380 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
381 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
382 const gchar *display_name, *headline;
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
383 PurpleAccount *account;
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
384 PurpleConnection *gc;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
385
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
386 g_return_val_if_fail(buddy != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
387
25237
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 25172 24805
diff changeset
388 user = msim_get_user_from_buddy(buddy, TRUE);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
389
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
390 account = purple_buddy_get_account(buddy);
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
391 gc = purple_account_get_connection(account);
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
392 session = (MsimSession *)gc->proto_data;
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
393
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
394 display_name = headline = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
395
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
396 /* Retrieve display name and/or headline, depending on user preference. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
397 if (purple_account_get_bool(session->account, "show_headline", TRUE)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
398 headline = user->headline;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
399 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
400
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
401 if (purple_account_get_bool(session->account, "show_display_name", FALSE)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
402 display_name = user->display_name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
403 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
404
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
405 /* Return appropriate combination of display name and/or headline, or neither. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
406
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
407 if (display_name && headline) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
408 return g_strconcat(display_name, " ", headline, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
409 } else if (display_name) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
410 return g_strdup(display_name);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
411 } else if (headline) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
412 return g_strdup(headline);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
413 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
414
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
415 return NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
416 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
417
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
418 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
419 * Obtain the tooltip text for a buddy.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
420 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
421 * @param buddy Buddy to obtain tooltip text on.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
422 * @param user_info Variable modified to have the tooltip text.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
423 * @param full TRUE if should obtain full tooltip text.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
424 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
425 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
426 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
427 gboolean full)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
428 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
429 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
430
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
431 g_return_if_fail(buddy != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
432 g_return_if_fail(user_info != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
433
25237
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 25172 24805
diff changeset
434 user = msim_get_user_from_buddy(buddy, TRUE);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
435
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
436 if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
437 MsimSession *session;
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
438 PurpleAccount *account = purple_buddy_get_account(buddy);
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
439 PurpleConnection *gc = purple_account_get_connection(account);
28977
e137c1fc216a Check if memory has been freed by looking at its contents does not work
Mark Doliner <mark@kingant.net>
parents: 28975
diff changeset
440
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
441 session = (MsimSession *)gc->proto_data;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
442
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
443 /* TODO: if (full), do something different? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
444
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
445 /* TODO: request information? have to figure out how to do
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
446 * the asynchronous lookup like oscar does (tooltip shows
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
447 * 'retrieving...' if not yet available, then changes when it is).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
448 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
449 * Right now, only show what we have on hand.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
450 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
451
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
452 /* Show abbreviated user info. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
453 msim_append_user_info(session, user_info, user, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
454 }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
455 }
22160
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22159
diff changeset
456
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
457 /**
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
458 * Get possible user status types. Based on mockprpl.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
459 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
460 * @return GList of status types.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
461 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
462 static GList *
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
463 msim_status_types(PurpleAccount *acct)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
464 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
465 GList *types;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
466 PurpleStatusType *status;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
467
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
468 purple_debug_info("myspace", "returning status types\n");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
469
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
470 types = NULL;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
471
22160
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22159
diff changeset
472 /* Statuses are almost all the same. Define a macro to reduce code repetition. */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
473 #define _MSIM_ADD_NEW_STATUS(prim) status = \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
474 purple_status_type_new_with_attrs( \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
475 prim, /* PurpleStatusPrimitive */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
476 NULL, /* id - use default */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
477 NULL, /* name - use default */ \
24464
3a3d36791a47 I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents: 24406
diff changeset
478 TRUE, /* saveable */ \
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
479 TRUE, /* user_settable */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
480 FALSE, /* not independent */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
481 \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
482 /* Attributes - each status can have a message. */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
483 "message", \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
484 _("Message"), \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
485 purple_value_new(PURPLE_TYPE_STRING), \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
486 NULL); \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
487 \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
488 \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
489 types = g_list_append(types, status)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
490
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
491
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
492 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
493 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
494 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
495 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
496
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
497 /* Except tune status is different... */
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
498 status = purple_status_type_new_with_attrs(
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
499 PURPLE_STATUS_TUNE, /* primitive */
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
500 "tune", /* ID */
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
501 NULL, /* name - use default */
24464
3a3d36791a47 I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents: 24406
diff changeset
502 FALSE, /* saveable */
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
503 TRUE, /* should be user_settable some day */
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
504 TRUE, /* independent */
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
505
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
506 PURPLE_TUNE_ARTIST, _("Artist"), purple_value_new(PURPLE_TYPE_STRING),
22266
fc31c35d8024 purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <stu@nosnilmot.com>
parents: 22264
diff changeset
507 PURPLE_TUNE_TITLE, _("Title"), purple_value_new(PURPLE_TYPE_STRING),
fc31c35d8024 purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <stu@nosnilmot.com>
parents: 22264
diff changeset
508 NULL);
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
509
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
510 types = g_list_append(types, status);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
511
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
512 return types;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
513 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
514
27155
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
515 /*
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
516 * TODO: This define is stolen from oscar.h.
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
517 * It's also in yahoo.h.
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
518 * It should be in libpurple/util.c
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
519 */
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
520 #define msim_put32(buf, data) ( \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
521 (*((buf)) = (unsigned char)((data)>>24)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
522 (*((buf)+1) = (unsigned char)((data)>>16)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
523 (*((buf)+2) = (unsigned char)((data)>>8)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
524 (*((buf)+3) = (unsigned char)(data)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
525 4)
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
526
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
527 /**
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
528 * Compute the base64'd login challenge response based on username, password, nonce, and IPs.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
529 *
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
530 * @param nonce The base64 encoded nonce ('nc') field from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
531 * @param email User's email address (used as login name).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
532 * @param password User's cleartext password.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
533 * @param response_len Will be written with response length.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
534 *
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
535 * @return Binary login challenge response, ready to send to the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
536 * Must be g_free()'d when finished. NULL if error.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
537 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
538 static gchar *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
539 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE],
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
540 const gchar *email, const gchar *password, guint *response_len)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
541 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
542 PurpleCipherContext *key_context;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
543 PurpleCipher *sha1;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
544 PurpleCipherContext *rc4;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
545
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
546 guchar hash_pw[HASH_SIZE];
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
547 guchar key[HASH_SIZE];
24914
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
548 gchar *password_truncated, *password_utf16le, *password_utf8_lc;
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
549 GString *data;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
550 guchar *data_out;
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
551 size_t data_out_len;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
552 gsize conv_bytes_read, conv_bytes_written;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
553 GError *conv_error;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
554 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
555 int i;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
556 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
557
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
558 g_return_val_if_fail(nonce != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
559 g_return_val_if_fail(email != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
560 g_return_val_if_fail(password != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
561 g_return_val_if_fail(response_len != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
562
24914
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
563 /*
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
564 * Truncate password to 10 characters. Their "change password"
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
565 * web page doesn't let you enter more than 10 characters, but you
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
566 * can enter more than 10 when logging in on myspace.com and they
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
567 * truncate it.
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
568 */
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
569 password_truncated = g_strndup(password, 10);
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
570
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
571 /* Convert password to lowercase (required for passwords containing
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
572 * uppercase characters). MySpace passwords are lowercase,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
573 * see ticket #2066. */
24914
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
574 password_utf8_lc = g_utf8_strdown(password_truncated, -1);
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
575 g_free(password_truncated);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
576
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
577 /* Convert ASCII password to UTF16 little endian */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
578 purple_debug_info("msim", "converting password to UTF-16LE\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
579 conv_error = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
580 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
581 &conv_bytes_read, &conv_bytes_written, &conv_error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
582 g_free(password_utf8_lc);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
583
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
584 if (conv_error != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
585 purple_debug_error("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
586 "g_convert password UTF8->UTF16LE failed: %s",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
587 conv_error->message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
588 g_error_free(conv_error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
589 return NULL;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
590 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
591
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
592 /* Compute password hash */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
593 purple_cipher_digest_region("sha1", (guchar *)password_utf16le,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
594 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
595 g_free(password_utf16le);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
596
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
597 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
598 purple_debug_info("msim", "pwhash = ");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
599 for (i = 0; i < sizeof(hash_pw); i++)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
600 purple_debug_info("msim", "%.2x ", hash_pw[i]);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
601 purple_debug_info("msim", "\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
602 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
603
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
604 /* key = sha1(sha1(pw) + nonce2) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
605 sha1 = purple_ciphers_find_cipher("sha1");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
606 key_context = purple_cipher_context_new(sha1, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
607 purple_cipher_context_append(key_context, hash_pw, HASH_SIZE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
608 purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
609 purple_cipher_context_digest(key_context, sizeof(key), key, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
610 purple_cipher_context_destroy(key_context);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
611
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
612 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
613 purple_debug_info("msim", "key = ");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
614 for (i = 0; i < sizeof(key); i++) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
615 purple_debug_info("msim", "%.2x ", key[i]);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
616 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
617 purple_debug_info("msim", "\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
618 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
619
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
620 rc4 = purple_cipher_context_new_by_name("rc4", NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
621
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
622 /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
623 * but only first 0x10 used for the RC4 key. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
624 purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
625 purple_cipher_context_set_key(rc4, key);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
626
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
627 /* rc4 encrypt:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
628 * nonce1+email+IP list */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
629
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
630 data = g_string_new(NULL);
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
631 g_string_append_len(data, nonce, NONCE_SIZE);
27155
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
632
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
633 /* Include the null terminator */
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
634 g_string_append_len(data, email, strlen(email) + 1);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
635
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
636 while (data->len % 4 != 0)
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
637 g_string_append_c(data, 0xfb);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
638
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
639 #ifdef SEND_OUR_IP_ADDRESSES
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
640 /* TODO: Obtain IPs of network interfaces instead of using this hardcoded value */
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
641 g_string_set_size(data, data->len + 4);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
642 msim_put32(data->str + data->len - 4, MSIM_LOGIN_IP_LIST_LEN);
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
643 g_string_append_len(data, MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN);
27155
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
644 #else
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
645 g_string_set_size(data, data->len + 4);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
646 msim_put32(data->str + data->len - 4, 0);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
647 #endif /* !SEND_OUR_IP_ADDRESSES */
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
648
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
649 data_out = g_new0(guchar, data->len);
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
650
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
651 purple_cipher_context_encrypt(rc4, (const guchar *)data->str,
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
652 data->len, data_out, &data_out_len);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
653 purple_cipher_context_destroy(rc4);
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
654
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
655 if (data_out_len != data->len) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
656 purple_debug_info("msim", "msim_compute_login_response: "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
657 "data length mismatch: %" G_GSIZE_FORMAT " != %"
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
658 G_GSIZE_FORMAT "\n", data_out_len, data->len);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
659 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
660
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
661 g_string_free(data, TRUE);
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
662
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
663 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
664 purple_debug_info("msim", "response=<%s>\n", data_out);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
665 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
666
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
667 *response_len = data_out_len;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
668
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
669 return (gchar *)data_out;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
670 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
671
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
672 /**
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
673 * Process a login challenge, sending a response.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
674 *
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
675 * @param session
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
676 * @param msg Login challenge message.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
677 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
678 * @return TRUE if successful, FALSE if not
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
679 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
680 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
681 msim_login_challenge(MsimSession *session, MsimMessage *msg)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
682 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
683 PurpleAccount *account;
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
684 gchar *response;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
685 guint response_len;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
686 gchar *nc;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
687 gsize nc_len;
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
688 gboolean ret;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
689
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
690 g_return_val_if_fail(msg != NULL, FALSE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
691
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
692 g_return_val_if_fail(msim_msg_get_binary(msg, "nc", &nc, &nc_len), FALSE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
693
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
694 account = session->account;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
695
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
696 g_return_val_if_fail(account != NULL, FALSE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
697
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
698 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
699
22486
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
700 purple_debug_info("msim", "nc is %" G_GSIZE_FORMAT
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
701 " bytes, decoded\n", nc_len);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
702
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
703 if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) {
22486
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
704 purple_debug_info("msim", "bad nc length: %" G_GSIZE_MODIFIER
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
705 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH);
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 20892
diff changeset
706 purple_connection_error_reason (session->gc,
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 20892
diff changeset
707 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20121
e4bcdd9622c2 purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents: 20057
diff changeset
708 _("Unexpected challenge length from server"));
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
709 return FALSE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
710 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
711
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
712 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
713
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
714 response_len = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
715 response = msim_compute_login_response(nc, account->username, account->password, &response_len);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
716
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
717 g_free(nc);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
718
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
719 ret = msim_send(session,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
720 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
721 /* This is actually user's email address. */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
722 "username", MSIM_TYPE_STRING, g_strdup(account->username),
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
723 /* GString will be freed in msim_msg_free() in msim_send(). */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
724 "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
725 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
726 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
727 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
728 "reconn", MSIM_TYPE_INTEGER, 0,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
729 "status", MSIM_TYPE_INTEGER, 100,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
730 "id", MSIM_TYPE_INTEGER, 1,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
731 NULL);
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
732
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
733 g_free(response);
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
734
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
735 return ret;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
736 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
737
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
738 /**
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
739 * Process unrecognized information.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
740 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
741 * @param session
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
742 * @param msg An MsimMessage that was unrecognized, or NULL.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
743 * @param note Information on what was unrecognized, or NULL.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
744 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
745 void
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
746 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
747 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
748 /* TODO: Some more context, outwardly equivalent to a backtrace,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
749 * for helping figure out what this msg is for. What was going on?
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
750 * But not too much information so that a user
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
751 * posting this dump reveals confidential information.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
752 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
753
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
754 /* TODO: dump unknown msgs to file, so user can send them to me
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
755 * if they wish, to help add support for new messages (inspired
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
756 * by Alexandr Shutko, who maintains OSCAR protocol documentation).
22156
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
757 *
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
758 * Filed enhancement ticket for libpurple as #4688.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
759 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
760
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
761 purple_debug_info("msim", "Unrecognized data on account for %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
762 (session && session->account && session->account->username) ?
19353
af0e77c44667 MySpace added a new field, LastImageUpdated. Save it in MsimUser.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19352
diff changeset
763 session->account->username : "(NULL)");
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
764 if (note) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
765 purple_debug_info("msim", "(Note: %s)\n", note);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
766 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
767
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
768 if (msg) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
769 msim_msg_dump("Unrecognized message dump: %s\n", msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
770 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
771 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
772
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
773 /** Called when the session key arrives to check whether the user
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
774 * has a username, and set one if desired. */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
775 static gboolean
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
776 msim_is_username_set(MsimSession *session, MsimMessage *msg)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
777 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
778 g_return_val_if_fail(msg != NULL, FALSE);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
779 g_return_val_if_fail(session->gc != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
780
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
781 session->sesskey = msim_msg_get_integer(msg, "sesskey");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
782 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
783
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
784 /* What is proof? Used to be uid, but now is 52 base64'd bytes... */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
785
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
786 /* Comes with: proof,profileid,userid,uniquenick -- all same values
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
787 * some of the time, but can vary. This is our own user ID. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
788 session->userid = msim_msg_get_integer(msg, "userid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
789
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
790 /* Save uid to account so this account can be looked up by uid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
791 purple_account_set_int(session->account, "uid", session->userid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
792
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
793 /* Not sure what profileid is used for. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
794 if (msim_msg_get_integer(msg, "profileid") != session->userid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
795 msim_unrecognized(session, msg,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
796 "Profile ID didn't match user ID, don't know why");
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
797 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
798
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
799 /* We now know are our own username, only after we're logged in..
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
800 * which is weird, but happens because you login with your email
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
801 * address and not username. Will be freed in msim_session_destroy(). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
802 session->username = msim_msg_get_string(msg, "uniquenick");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
803
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
804 /* If user lacks a username, help them get one. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
805 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
806 purple_debug_info("msim_is_username_set", "no username is set\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
807 purple_request_yes_no(session->gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
808 _("MySpaceIM - No Username Set"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
809 _("You appear to have no MySpace username."),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
810 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
811 0,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
812 session->account,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
813 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
814 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
815 session->gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
816 G_CALLBACK(msim_set_username_cb),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
817 G_CALLBACK(msim_do_not_set_username_cb));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
818 purple_debug_info("msim_is_username_set","'username not set' alert prompted\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
819 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
820 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
821 return TRUE;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
822 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
823
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
824 #ifdef MSIM_USE_KEEPALIVE
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
825 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
826 * Check if the connection is still alive, based on last communication.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
827 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
828 static gboolean
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
829 msim_check_alive(gpointer data)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
830 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
831 MsimSession *session;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
832 time_t delta;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
833
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
834 session = (MsimSession *)data;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
835
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
836 delta = time(NULL) - session->last_comm;
24682
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
837
22156
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
838 /* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
839 if (delta >= MSIM_KEEPALIVE_INTERVAL) {
24682
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
840 purple_debug_info("msim",
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
841 "msim_check_alive: %zu > interval of %d, presumed dead\n",
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
842 delta, MSIM_KEEPALIVE_INTERVAL);
22156
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
843 purple_connection_error_reason(session->gc,
24682
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
844 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
845 _("Lost connection with server"));
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
846
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
847 return FALSE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
848 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
849
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
850 return TRUE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
851 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
852 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
853
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
854 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
855 * Handle mail reply checks.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
856 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
857 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
858 msim_check_inbox_cb(MsimSession *session, const MsimMessage *reply, gpointer data)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
859 {
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
860 MsimMessage *body;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
861 guint old_inbox_status;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
862 guint i, n;
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
863 /* Information for each new inbox message type. */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
864 static struct
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
865 {
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
866 const gchar *key;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
867 guint bit;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
868 const gchar *url;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
869 const gchar *text;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
870 } message_types[] = {
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
871 { "Mail", MSIM_INBOX_MAIL, "http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox", NULL },
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
872 { "BlogComment", MSIM_INBOX_BLOG_COMMENT, "http://blog.myspace.com/index.cfm?fuseaction=blog", NULL },
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
873 { "ProfileComment", MSIM_INBOX_PROFILE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL },
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
874 { "FriendRequest", MSIM_INBOX_FRIEND_REQUEST, "http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests", NULL },
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
875 { "PictureComment", MSIM_INBOX_PICTURE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
876 };
25606
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
877 const gchar *froms[G_N_ELEMENTS(message_types) + 1] = { "" },
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
878 *tos[G_N_ELEMENTS(message_types) + 1] = { "" },
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
879 *urls[G_N_ELEMENTS(message_types) + 1] = { "" },
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
880 *subjects[G_N_ELEMENTS(message_types) + 1] = { "" };
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
881
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
882 g_return_if_fail(reply != NULL);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
883
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
884 /* Can't write _()'d strings in array initializers. Workaround. */
25606
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
885 /* khc: then use N_() in the array initializer and use _() when they are
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
886 used */
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
887 message_types[0].text = _("New mail messages");
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
888 message_types[1].text = _("New blog comments");
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
889 message_types[2].text = _("New profile comments");
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
890 message_types[3].text = _("New friend requests!");
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
891 message_types[4].text = _("New picture comments");
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
892
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
893 body = msim_msg_get_dictionary(reply, "body");
21758
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
894
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
895 if (body == NULL)
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
896 return;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
897
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
898 old_inbox_status = session->inbox_status;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
899
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
900 n = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
901
25606
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
902 for (i = 0; i < G_N_ELEMENTS(message_types); ++i) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
903 const gchar *key;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
904 guint bit;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
905
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
906 key = message_types[i].key;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
907 bit = message_types[i].bit;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
908
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
909 if (msim_msg_get(body, key)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
910 /* Notify only on when _changes_ from no mail -> has mail
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
911 * (edge triggered) */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
912 if (!(session->inbox_status & bit)) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
913 purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
914 key ? key : "(NULL)", n);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
915
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
916 subjects[n] = message_types[i].text;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
917 froms[n] = _("MySpace");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
918 tos[n] = session->username;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
919 /* TODO: append token, web challenge, so automatically logs in.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
920 * Would also need to free strings because they won't be static
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
921 */
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
922 urls[n] = message_types[i].url;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
923
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
924 ++n;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
925 } else {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
926 purple_debug_info("msim",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
927 "msim_check_inbox_cb: already notified of %s\n",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
928 key ? key : "(NULL)");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
929 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
930
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
931 session->inbox_status |= bit;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
932 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
933 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
934
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
935 if (n) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
936 purple_debug_info("msim",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
937 "msim_check_inbox_cb: notifying of %d\n", n);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
938
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
939 /* TODO: free strings with callback _if_ change to dynamic (w/ token) */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
940 purple_notify_emails(session->gc, /* handle */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
941 n, /* count */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
942 TRUE, /* detailed */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
943 subjects, froms, tos, urls,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
944 NULL, /* PurpleNotifyCloseCallback cb */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
945 NULL); /* gpointer user_data */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
946
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
947 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
948
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
949 msim_msg_free(body);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
950 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
951
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
952 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
953 * Send request to check if there is new mail.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
954 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
955 static gboolean
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
956 msim_check_inbox(gpointer data)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
957 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
958 MsimSession *session;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
959
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
960 session = (MsimSession *)data;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
961
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
962 purple_debug_info("msim", "msim_check_inbox: checking mail\n");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
963 g_return_val_if_fail(msim_send(session,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
964 "persist", MSIM_TYPE_INTEGER, 1,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
965 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
966 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
967 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
968 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
969 "uid", MSIM_TYPE_INTEGER, session->userid,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
970 "rid", MSIM_TYPE_INTEGER,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
971 msim_new_reply_callback(session, msim_check_inbox_cb, NULL),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
972 "body", MSIM_TYPE_STRING, g_strdup(""),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
973 NULL), TRUE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
974
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
975 /* Always return true, so that we keep checking for mail. */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
976 return TRUE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
977 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
978
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
979 /**
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
980 * Add contact from server to buddy list, after looking up username.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
981 * Callback from msim_add_contact_from_server().
19256
34a1957de14b Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19255
diff changeset
982 *
34a1957de14b Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19255
diff changeset
983 * @param data An MsimMessage * of the contact information. Will be freed.
34a1957de14b Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19255
diff changeset
984 */
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
985 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
986 msim_add_contact_from_server_cb(MsimSession *session, const MsimMessage *user_lookup_info, gpointer data)
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
987 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
988 MsimMessage *contact_info, *user_lookup_info_body;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
989 PurpleGroup *group;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
990 PurpleBuddy *buddy;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
991 MsimUser *user;
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
992 gchar *username, *group_name, *display_name;
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
993 guint uid, visibility;
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
994
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
995 contact_info = (MsimMessage *)data;
22486
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
996 purple_debug_info("msim_add_contact_from_server_cb", "contact_info addr=%p\n", contact_info);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
997 uid = msim_msg_get_integer(contact_info, "ContactID");
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
998
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
999 if (!user_lookup_info) {
22159
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22158
diff changeset
1000 username = g_strdup(msim_uid2username_from_blist(session->account, uid));
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1001 display_name = NULL;
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1002 g_return_if_fail(username != NULL);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1003 } else {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1004 user_lookup_info_body = msim_msg_get_dictionary(user_lookup_info, "body");
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1005 username = msim_msg_get_string(user_lookup_info_body, "UserName");
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1006 display_name = msim_msg_get_string(user_lookup_info_body, "DisplayName");
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1007 msim_msg_free(user_lookup_info_body);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1008 g_return_if_fail(username != NULL);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1009 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1010
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1011 purple_debug_info("msim_add_contact_from_server_cb",
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1012 "*** about to add/update username=%s\n", username);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1013
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1014 /* 1. Creates a new group, or gets existing group if it exists (or so
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1015 * the documentation claims). */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1016 group_name = msim_msg_get_string(contact_info, "GroupName");
22983
882af25a8edf Fix handling of empty groups in MySpace. Fixes #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22980
diff changeset
1017 if (!group_name || (*group_name == '\0')) {
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1018 g_free(group_name);
22980
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1019 group_name = g_strdup(_("IM Friends"));
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1020 purple_debug_info("myspace", "No GroupName specified, defaulting to '%s'.\n", group_name);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1021 }
22980
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1022 group = purple_find_group(group_name);
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1023 if (!group) {
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1024 group = purple_group_new(group_name);
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1025 /* Add group to beginning. See #2752. */
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1026 purple_blist_add_group(group, NULL);
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1027 }
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1028 g_free(group_name);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1029
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1030 visibility = msim_msg_get_integer(contact_info, "Visibility");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1031 if (visibility == 2) {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1032 /* This buddy is blocked (and therefore not on our buddy list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1033 purple_privacy_deny_add(session->account, username, TRUE);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1034 msim_msg_free(contact_info);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1035 g_free(username);
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1036 g_free(display_name);
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1037 return;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1038 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1039
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1040 /* 2. Get or create buddy */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1041 buddy = purple_find_buddy(session->account, username);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1042 if (!buddy) {
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1043 purple_debug_info("msim_add_contact_from_server_cb",
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1044 "creating new buddy: %s\n", username);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1045 buddy = purple_buddy_new(session->account, username, NULL);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1046 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1047
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1048 /* TODO: use 'Position' in contact_info to take into account where buddy is */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1049 purple_blist_add_buddy(buddy, NULL, group, NULL /* insertion point */);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1050
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1051 if (strtol(username, NULL, 10) == uid) {
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1052 /*
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1053 * This user has not set their username! Set their server
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1054 * alias to their display name so that we don't see a bunch
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1055 * of numbers in the buddy list.
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1056 */
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1057 if (display_name != NULL) {
25887
47540809ae91 explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
parents: 24803 25886
diff changeset
1058 purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name);
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1059 serv_got_alias(session->gc, username, display_name);
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1060 } else {
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1061 serv_got_alias(session->gc, username,
25887
47540809ae91 explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
parents: 24803 25886
diff changeset
1062 purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName"));
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1063 }
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1064 }
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1065 g_free(display_name);
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1066
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1067 /* 3. Update buddy information */
25237
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 25172 24805
diff changeset
1068 user = msim_get_user_from_buddy(buddy, TRUE);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1069
24684
128a77f3b3c4 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents: 24683
diff changeset
1070 user->id = uid;
128a77f3b3c4 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents: 24683
diff changeset
1071 /* Keep track of the user ID across sessions */
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
1072 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", uid);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1073
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1074 /* Stores a few fields in the MsimUser, relevant to the buddy itself.
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1075 * AvatarURL, Headline, ContactID. */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1076 msim_store_user_info(session, contact_info, NULL);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1077
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1078 /* TODO: other fields, store in 'user' */
19256
34a1957de14b Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19255
diff changeset
1079 msim_msg_free(contact_info);
22226
9f95357c21b9 In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22225
diff changeset
1080
9f95357c21b9 In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22225
diff changeset
1081 g_free(username);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1082 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1083
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1084 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1085 * Add first ContactID in contact_info to buddy's list. Used to add
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1086 * server-side buddies to client-side list.
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1087 *
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1088 * @return TRUE if added.
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1089 */
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1090 static gboolean
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1091 msim_add_contact_from_server(MsimSession *session, MsimMessage *contact_info)
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1092 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1093 guint uid;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1094 const gchar *username;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1095
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1096 uid = msim_msg_get_integer(contact_info, "ContactID");
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1097 g_return_val_if_fail(uid != 0, FALSE);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1098
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1099 /* Lookup the username, since NickName and IMName is unreliable */
22159
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22158
diff changeset
1100 username = msim_uid2username_from_blist(session->account, uid);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1101 if (!username) {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1102 gchar *uid_str;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1103
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1104 uid_str = g_strdup_printf("%d", uid);
19256
34a1957de14b Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19255
diff changeset
1105 purple_debug_info("msim_add_contact_from_server",
22486
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
1106 "contact_info addr=%p\n", contact_info);
19256
34a1957de14b Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19255
diff changeset
1107 msim_lookup_user(session, uid_str, msim_add_contact_from_server_cb, (gpointer)msim_msg_clone(contact_info));
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1108 g_free(uid_str);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1109 } else {
19256
34a1957de14b Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19255
diff changeset
1110 msim_add_contact_from_server_cb(session, NULL, (gpointer)msim_msg_clone(contact_info));
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1111 }
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1112
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1113 /* Say that the contact was added, even if we're still looking up
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1114 * their username. */
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1115 return TRUE;
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1116 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1117
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1118 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1119 * Called when contact list is received from server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1120 */
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1121 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
1122 msim_got_contact_list(MsimSession *session, const MsimMessage *reply, gpointer user_data)
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1123 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1124 MsimMessage *body, *body_node;
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1125 gchar *msg;
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1126 guint buddy_count;
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1127
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1128 body = msim_msg_get_dictionary(reply, "body");
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1129
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1130 buddy_count = 0;
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1131
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1132 for (body_node = body;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1133 body_node != NULL;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1134 body_node = msim_msg_get_next_element_node(body_node))
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1135 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1136 MsimMessageElement *elem;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1137
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1138 elem = (MsimMessageElement *)body_node->data;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1139
19428
1fa10842eb83 In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19427
diff changeset
1140 if (g_str_equal(elem->name, "ContactID"))
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1141 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1142 /* Will look for first contact in body_node */
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1143 if (msim_add_contact_from_server(session, body_node)) {
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1144 ++buddy_count;
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1145 }
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1146 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1147 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1148
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1149 switch (GPOINTER_TO_UINT(user_data)) {
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1150 case MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS:
23332
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23319
diff changeset
1151 msg = g_strdup_printf(ngettext("%d buddy was added or updated from the server (including buddies already on the server-side list)",
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23319
diff changeset
1152 "%d buddies were added or updated from the server (including buddies already on the server-side list)",
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23319
diff changeset
1153 buddy_count),
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23319
diff changeset
1154 buddy_count);
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1155 purple_notify_info(session->account, _("Add contacts from server"), msg, NULL);
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1156 g_free(msg);
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1157 break;
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1158
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1159 case MSIM_CONTACT_LIST_IMPORT_TOP_FRIENDS:
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1160 /* TODO */
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1161 break;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1162
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1163 case MSIM_CONTACT_LIST_INITIAL_FRIENDS:
25419
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1164 /* The session is now set up, ready to be connected. This emits the
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1165 * signedOn signal, so clients can now do anything with msimprpl, and
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1166 * we're ready for it (session key, userid, username all setup). */
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1167 purple_connection_update_progress(session->gc, _("Connected"), 3, 4);
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1168 purple_connection_set_state(session->gc, PURPLE_CONNECTED);
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1169 break;
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1170 }
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1171
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1172 msim_msg_free(body);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1173 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1174
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1175 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1176 * Get contact list, calling msim_got_contact_list() with
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1177 * what_to_do_after as user_data gpointer.
24771
9f6ae339e849 Minor comment change
Mark Doliner <mark@kingant.net>
parents: 24770
diff changeset
1178 *
9f6ae339e849 Minor comment change
Mark Doliner <mark@kingant.net>
parents: 24770
diff changeset
1179 * @param what_to_do_after should be one of the MSIM_CONTACT_LIST_* #defines.
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1180 */
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1181 static gboolean
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1182 msim_get_contact_list(MsimSession *session, int what_to_do_after)
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1183 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1184 return msim_send(session,
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1185 "persist", MSIM_TYPE_INTEGER, 1,
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1186 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1187 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1188 "dsn", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_DSN,
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1189 "lid", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_LID,
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1190 "uid", MSIM_TYPE_INTEGER, session->userid,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1191 "rid", MSIM_TYPE_INTEGER,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1192 msim_new_reply_callback(session, msim_got_contact_list, GUINT_TO_POINTER(what_to_do_after)),
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1193 "body", MSIM_TYPE_STRING, g_strdup(""),
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1194 NULL);
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1195 }
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1196
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1197 /** Called after username is set, if necessary and we're open for business. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1198 gboolean msim_we_are_logged_on(MsimSession *session)
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
1199 {
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
1200 MsimMessage *body;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1201
24770
512c7c31eb21 Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents: 24768
diff changeset
1202 /* Set display name to username (otherwise will show email address) */
512c7c31eb21 Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents: 24768
diff changeset
1203 purple_connection_set_display_name(session->gc, session->username);
512c7c31eb21 Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents: 24768
diff changeset
1204
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1205 body = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1206 "UserID", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1207 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1208
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1209 /* Request IM info about ourself. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1210 msim_send(session,
24779
e5f8d9ba84db I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
1211 "persist", MSIM_TYPE_INTEGER, 1,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1212 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24780
d7fad2c0cf7c Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents: 24779
diff changeset
1213 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1214 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1215 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1216 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
24780
d7fad2c0cf7c Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents: 24779
diff changeset
1217 "UserID", MSIM_TYPE_INTEGER, session->userid,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1218 "body", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1219 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1220
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1221 /* Request MySpace info about ourself. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1222 msim_send(session,
24779
e5f8d9ba84db I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
1223 "persist", MSIM_TYPE_INTEGER, 1,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1224 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24780
d7fad2c0cf7c Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents: 24779
diff changeset
1225 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1226 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1227 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1228 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1229 "body", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1230 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1231
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1232 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1233 /* TODO: set blocklist */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1234
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1235 /* Notify servers of our current status. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1236 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1237 msim_set_status(session->account,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1238 purple_account_get_active_status(session->account));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1239
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1240 /* TODO: setinfo */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1241 /*
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1242 body = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1243 "TotalFriends", MSIM_TYPE_INTEGER, 666,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1244 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1245 msim_send(session,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1246 "setinfo", MSIM_TYPE_BOOLEAN, TRUE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1247 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1248 "info", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1249 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1250 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1251
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1252 /* Disable due to problems with timeouts. TODO: fix. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1253 #ifdef MSIM_USE_KEEPALIVE
25576
7f552614ec8a applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents: 25538
diff changeset
1254 purple_timeout_add_seconds(MSIM_KEEPALIVE_INTERVAL_CHECK,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1255 (GSourceFunc)msim_check_alive, session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1256 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1257
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1258 /* Check mail if they want to. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1259 if (purple_account_get_check_mail(session->account)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1260 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1261 (GSourceFunc)msim_check_inbox, session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1262 msim_check_inbox(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1263 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1264
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1265 msim_get_contact_list(session, MSIM_CONTACT_LIST_INITIAL_FRIENDS);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1266
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1267 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1268 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1269
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1270 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1271 * Record the client version in the buddy list, from an incoming message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1272 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1273 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1274 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1275 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1276 gchar *username, *cv;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1277 gboolean ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1278 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1279
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1280 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1281 cv = msim_msg_get_string(msg, "cv");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1282
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1283 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1284 if (!cv) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1285 /* No client version to record, don't worry about it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1286 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1287 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1288 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1289
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1290 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1291
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1292 if (user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1293 user->client_cv = atol(cv);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1294 ret = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1295 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1296 ret = FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1297 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1298
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1299 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1300 g_free(cv);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1301
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1302 return ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1303 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1304
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1305 #ifdef MSIM_SEND_CLIENT_VERSION
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1306 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1307 * Send our client version to another unofficial client that understands it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1308 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1309 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1310 msim_send_unofficial_client(MsimSession *session, gchar *username)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1311 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1312 gchar *our_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1313 gboolean ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1314
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1315 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1316 PURPLE_MAJOR_VERSION,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1317 PURPLE_MINOR_VERSION,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1318 PURPLE_MICRO_VERSION,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1319 MSIM_PRPL_VERSION_STRING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1320
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1321 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1322
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1323 return ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1324 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1325 #endif
27904
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1326 /**
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1327 * Process incoming status mood messages.
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1328 *
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1329 * @param session
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1330 * @param msg Status mood update message. Caller frees.
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1331 *
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1332 * @return TRUE if successful.
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1333 */
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1334 static gboolean
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1335 msim_incoming_status_mood(MsimSession *session, MsimMessage *msg) {
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1336 /* TODO: I dont know too much about this yet,
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1337 * so until I see how the official client handles
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1338 * this and decide if libpurple should as well,
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1339 * well just say we used it
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1340 */
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1341 gchar *ss;
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1342 ss = msim_msg_get_string(msg, "msg");
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1343 purple_debug_info("msim", "Incoming Status Message: %s", ss ? ss : "(NULL)");
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1344 g_free(ss);
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1345 return TRUE;
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1346 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1347
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1348 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1349 * Process incoming status messages.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1350 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1351 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1352 * @param msg Status update message. Caller frees.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1353 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1354 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1355 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1356 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1357 msim_incoming_status(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1358 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1359 PurpleBuddyList *blist;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1360 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1361 GList *list;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1362 gchar *status_headline, *status_headline_escaped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1363 gint status_code, purple_status_code;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1364 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1365 gchar *unrecognized_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1366
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1367 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1368
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1369 /* Helpfully looked up by msim_incoming_resolve() for us. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1370 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1371 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1372
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1373 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1374 gchar *ss;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1375
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1376 ss = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1377 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1378 "msim_status: updating status for <%s> to <%s>\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1379 username, ss ? ss : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1380 g_free(ss);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1381 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1382
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1383 /* Example fields:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1384 * |s|0|ss|Offline
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1385 * |s|1|ss|:-)|ls||ip|0|p|0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1386 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1387 list = msim_msg_get_list(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1388
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1389 status_code = msim_msg_get_integer_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1390 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1391 status_headline = msim_msg_get_string_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1392
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1393 blist = purple_get_blist();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1394
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1395 /* Add buddy if not found.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1396 * TODO: Could this be responsible for #3444? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1397 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1398 if (!user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1399 PurpleBuddy *buddy;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1400
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1401 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1402 "msim_status: making new buddy for %s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1403 buddy = purple_buddy_new(session->account, username, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1404 purple_blist_add_buddy(buddy, NULL, NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1405
25237
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 25172 24805
diff changeset
1406 user = msim_get_user_from_buddy(buddy, TRUE);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1407 user->id = msim_msg_get_integer(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1408
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1409 /* Keep track of the user ID across sessions */
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
1410 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1411
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1412 msim_store_user_info(session, msg, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1413 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1414 purple_debug_info("msim", "msim_status: found buddy %s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1415 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1416
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1417 if (status_headline && strcmp(status_headline, "") != 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1418 /* The status headline is plaintext, but libpurple treats it as HTML,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1419 * so escape any HTML characters to their entity equivalents. */
24805
22fd7467f0cc Fix a few small memleaks
Mark Doliner <mark@kingant.net>
parents: 24803
diff changeset
1420 status_headline_escaped = g_markup_escape_text(status_headline, -1);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1421 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1422 status_headline_escaped = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1423 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1424
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1425 g_free(status_headline);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1426
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1427 /* don't copy; let the MsimUser own the headline, memory-wise */
24805
22fd7467f0cc Fix a few small memleaks
Mark Doliner <mark@kingant.net>
parents: 24803
diff changeset
1428 g_free(user->headline);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1429 user->headline = status_headline_escaped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1430
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1431 /* Set user status */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1432 switch (status_code) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1433 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1434 purple_status_code = PURPLE_STATUS_OFFLINE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1435 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1436
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1437 case MSIM_STATUS_CODE_ONLINE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1438 purple_status_code = PURPLE_STATUS_AVAILABLE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1439 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1440
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1441 case MSIM_STATUS_CODE_AWAY:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1442 purple_status_code = PURPLE_STATUS_AWAY;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1443 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1444
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1445 case MSIM_STATUS_CODE_IDLE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1446 /* Treat idle as an available status. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1447 purple_status_code = PURPLE_STATUS_AVAILABLE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1448 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1449
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1450 default:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1451 purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1452 username, status_code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1453 purple_status_code = PURPLE_STATUS_AVAILABLE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1454
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1455 unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1456 status_code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1457 msim_unrecognized(session, NULL, unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1458 g_free(unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1459 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1460
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1461 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1462
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1463 if (status_code == MSIM_STATUS_CODE_IDLE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1464 purple_debug_info("msim", "msim_status: got idle: %s\n", username);
24798
a8643ca8d2e0 Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents: 24796
diff changeset
1465 purple_prpl_got_user_idle(session->account, username, TRUE, 0);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1466 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1467 /* All other statuses indicate going back to non-idle. */
24798
a8643ca8d2e0 Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents: 24796
diff changeset
1468 purple_prpl_got_user_idle(session->account, username, FALSE, 0);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1469 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1470
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1471 #ifdef MSIM_SEND_CLIENT_VERSION
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1472 if (status_code == MSIM_STATUS_CODE_ONLINE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1473 /* Secretly whisper to unofficial clients our own version as they come online */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1474 msim_send_unofficial_client(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1475 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1476 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1477
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1478 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1479 /* Get information when they come online.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1480 * TODO: periodically refresh?
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1481 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1482 purple_debug_info("msim_incoming_status", "%s came online, looking up\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1483 msim_lookup_user(session, username, NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1484 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1485
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1486 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1487 msim_msg_list_free(list);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1488
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1489 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1490 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1491
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1492 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1493 * Handle an incoming instant message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1494 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1495 * @param session The session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1496 * @param msg Message from the server, containing 'f' (userid from) and 'msg'.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1497 * Should also contain username in _username from preprocessing.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1498 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1499 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1500 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1501 static gboolean
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1502 msim_incoming_im(MsimSession *session, MsimMessage *msg, const gchar *username)
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1503 {
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1504 gchar *msg_msim_markup, *msg_purple_markup;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1505 gchar *userid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1506 time_t time_received;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1507 PurpleConversation *conv;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1508
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1509 /* I know this isn't really a string... but we need it to be one for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1510 * purple_find_conversation_with_account(). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1511 userid = msim_msg_get_string(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1512
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1513 purple_debug_info("msim_incoming_im", "UserID is %s", userid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1514
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1515 if (msim_is_userid(username)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1516 purple_debug_info("msim", "Ignoring message from spambot (%s) on account %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1517 username, purple_account_get_username(session->account));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1518 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1519 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1520
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1521 /* See if a conversation with their UID already exists...*/
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1522 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, userid, session->account);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1523 if (conv) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1524 /* Since the conversation exists... We need to normalize it */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1525 purple_conversation_set_name(conv, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1526 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1527
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1528 msg_msim_markup = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1529 g_return_val_if_fail(msg_msim_markup != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1530
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1531 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1532 g_free(msg_msim_markup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1533
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1534 time_received = msim_msg_get_integer(msg, "date");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1535 if (!time_received) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1536 purple_debug_info("msim_incoming_im", "date in message not set.\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1537 time_received = time(NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1538 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1539
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1540 serv_got_im(session->gc, username, msg_purple_markup, PURPLE_MESSAGE_RECV, time_received);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1541
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1542 g_free(msg_purple_markup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1543
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1544 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1545 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1546
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1547 /**
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1548 * Handle an incoming action message or an IM.
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1549 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1550 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1551 * @param msg
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1552 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1553 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1554 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1555 static gboolean
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1556 msim_incoming_action_or_im(MsimSession *session, MsimMessage *msg)
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1557 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1558 gchar *msg_text, *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1559 gboolean rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1560
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1561 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1562
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1563 msg_text = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1564 g_return_val_if_fail(msg_text != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1565
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1566 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1567 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1568
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1569 purple_debug_info("msim",
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1570 "msim_incoming_action_or_im: action <%s> from <%s>\n",
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1571 msg_text, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1572
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1573 if (g_str_equal(msg_text, "%typing%")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1574 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1575 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1576 } else if (g_str_equal(msg_text, "%stoptyping%")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1577 serv_got_typing_stopped(session->gc, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1578 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1579 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1580 rc = msim_incoming_zap(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1581 } else if (strstr(msg_text, "!!!GroupCount=")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1582 /* TODO: support group chats. I think the number in msg_text has
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1583 * something to do with the 'gid' field. */
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1584 purple_debug_info("msim",
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1585 "msim_incoming_action_or_im: "
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1586 "TODO: implement #4691, group chats: %s\n", msg_text);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1587
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1588 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1589 } else if (strstr(msg_text, "!!!Offline=")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1590 /* TODO: support group chats. This one might mean a user
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1591 * went offline or exited the chat. */
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1592 purple_debug_info("msim", "msim_incoming_action_or_im: "
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1593 "TODO: implement #4691, group chats: %s\n", msg_text);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1594
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1595 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1596 } else if (msim_msg_get_integer(msg, "aid") != 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1597 purple_debug_info("msim", "TODO: implement #4691, group chat from %d on %d: %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1598 msim_msg_get_integer(msg, "aid"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1599 msim_msg_get_integer(msg, "f"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1600 msg_text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1601
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1602 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1603 } else {
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1604 rc = msim_incoming_im(session, msg, username);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1605 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1606
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1607 g_free(msg_text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1608 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1609
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1610 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1611 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1612
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1613 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1614 * Process an incoming media (message background?) message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1615 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1616 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1617 msim_incoming_media(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1618 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1619 gchar *username, *text;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1620
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1621 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1622 text = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1623
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1624 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1625 g_return_val_if_fail(text != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1626
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1627 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1628
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1629 /* Media messages are sent when the user opens a window to someone.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1630 * Tell libpurple they started typing and stopped typing, to inform the Psychic
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1631 * Mode plugin so it too can open a window to the user. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1632 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1633 serv_got_typing_stopped(session->gc, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1634
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1635 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1636
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1637 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1638 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1639
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1640 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1641 * Process an incoming "unofficial client" message. The plugin for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1642 * Miranda IM sends this message with the plugin information.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1643 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1644 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1645 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1646 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1647 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1648 gchar *username, *client_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1649
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1650 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1651 client_info = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1652
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1653 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1654 g_return_val_if_fail(client_info != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1655
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1656 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1657 username, client_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1658
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1659 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1660
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1661 g_return_val_if_fail(user != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1662
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1663 if (user->client_info) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1664 g_free(user->client_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1665 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1666 user->client_info = client_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1667
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1668 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1669 /* Do not free client_info - the MsimUser now owns it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1670
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1671 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1672 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1673
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1674 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1675 * Handle an incoming buddy message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1676 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1677 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1678 msim_incoming_bm(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1679 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1680 guint bm;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1681
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1682 bm = msim_msg_get_integer(msg, "bm");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1683
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1684 msim_incoming_bm_record_cv(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1685
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1686 switch (bm) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1687 case MSIM_BM_STATUS:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1688 return msim_incoming_status(session, msg);
27154
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27137
diff changeset
1689 case MSIM_BM_ACTION_OR_IM_DELAYABLE:
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27137
diff changeset
1690 case MSIM_BM_ACTION_OR_IM_INSTANT:
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1691 return msim_incoming_action_or_im(session, msg);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1692 case MSIM_BM_MEDIA:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1693 return msim_incoming_media(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1694 case MSIM_BM_UNOFFICIAL_CLIENT:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1695 return msim_incoming_unofficial_client(session, msg);
27904
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1696 case MSIM_BM_STATUS_MOOD:
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1697 return msim_incoming_status_mood(session, msg);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1698 default:
27888
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1699 /*
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1700 * Unknown message type! We used to call
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1701 * msim_incoming_action_or_im(session, msg);
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1702 * for these, but that doesn't help anything, and it means
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1703 * we'll show broken gibberish if MySpace starts sending us
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1704 * other message types.
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1705 */
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1706 purple_debug_warning("myspace", "Received unknown imcoming "
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1707 "message, bm=%u\n", bm);
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1708 return TRUE;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1709 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1710 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1711
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1712 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1713 * Process the initial server information from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1714 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1715 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1716 msim_process_server_info(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1717 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1718 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1719
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1720 body = msim_msg_get_dictionary(msg, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1721 g_return_val_if_fail(body != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1722
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1723 /* Example body:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1724 AdUnitRefreshInterval=10.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1725 AlertPollInterval=360.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1726 AllowChatRoomEmoticonSharing=False.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1727 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1728 CurClientVersion=673.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1729 EnableIMBrowse=True.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1730 EnableIMStuffAvatars=False.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1731 EnableIMStuffZaps=False.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1732 MaxAddAllFriends=100.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1733 MaxContacts=1000.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1734 MinClientVersion=594.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1735 MySpaceIM_ENGLISH=78744676.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1736 MySpaceNowTimer=720.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1737 PersistenceDataTimeout=900.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1738 UseWebChallenge=1.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1739 WebTicketGoHome=False
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1740
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1741 Anything useful? TODO: use what is useful, and use it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1742 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1743 purple_debug_info("msim_process_server_info",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1744 "maximum contacts: %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1745 msim_msg_get_integer(body, "MaxContacts"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1746
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1747 session->server_info = body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1748 /* session->server_info freed in msim_session_destroy */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1749
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1750 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1751 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1752
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1753 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1754 * Process a web challenge, used to login to the web site.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1755 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1756 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1757 msim_web_challenge(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1758 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1759 /* TODO: web challenge, store token. #2659. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1760 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1761 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1762
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1763 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1764 * Process a persistance message reply from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1765 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1766 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1767 * @param msg Message reply from server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1768 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1769 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1770 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1771 * msim_lookup_user sets callback for here
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1772 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1773 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1774 msim_process_reply(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1775 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1776 MSIM_USER_LOOKUP_CB cb;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1777 gpointer data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1778 guint rid, cmd, dsn, lid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1779
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1780 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1781
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1782 msim_store_user_info(session, msg, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1783
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1784 rid = msim_msg_get_integer(msg, "rid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1785 cmd = msim_msg_get_integer(msg, "cmd");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1786 dsn = msim_msg_get_integer(msg, "dsn");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1787 lid = msim_msg_get_integer(msg, "lid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1788
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1789 /* Unsolicited messages */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1790 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1791 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1792 return msim_process_server_info(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1793 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1794 return msim_web_challenge(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1795 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1796 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1797
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1798 /* If a callback is registered for this userid lookup, call it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1799 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1800 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1801
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1802 if (cb) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1803 purple_debug_info("msim", "msim_process_reply: calling callback now\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1804 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
1805 cb(session, msg, data);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1806 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1807 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1808 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1809 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1810 "msim_process_reply: no callback for rid %d\n", rid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1811 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1812
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1813 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1814 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1815
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1816 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1817 * Handle an error from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1818 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1819 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1820 * @param msg The message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1821 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1822 * @return TRUE if successfully reported error.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1823 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1824 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1825 msim_error(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1826 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1827 gchar *errmsg, *full_errmsg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1828 guint err;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1829
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1830 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1831
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1832 err = msim_msg_get_integer(msg, "err");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1833 errmsg = msim_msg_get_string(msg, "errmsg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1834
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1835 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1836 errmsg ? errmsg : "no 'errmsg' given");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1837
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1838 g_free(errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1839
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1840 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1841 session->sesskey, full_errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1842
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1843 /* Destroy session if fatal. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1844 if (msim_msg_get(msg, "fatal")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1845 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1846 purple_debug_info("msim", "fatal error, closing\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1847
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1848 switch (err) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1849 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1850 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1851 if (!purple_account_get_remember_password(session->account))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1852 purple_account_set_password(session->account, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1853 #ifdef MSIM_MAX_PASSWORD_LENGTH
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1854 if (session->account->password && (strlen(session->account->password) > MSIM_MAX_PASSWORD_LENGTH)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1855 gchar *suggestion;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1856
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1857 suggestion = g_strdup_printf(_("%s Your password is "
27127
c4f0e47c7bed Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents: 27027
diff changeset
1858 "%zu characters, which is longer than the "
c4f0e47c7bed Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents: 27027
diff changeset
1859 "maximum length of %d. Please shorten your "
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1860 "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."),
27127
c4f0e47c7bed Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents: 27027
diff changeset
1861 full_errmsg,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1862 strlen(session->account->password),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1863 MSIM_MAX_PASSWORD_LENGTH);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1864
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1865 /* Replace full_errmsg. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1866 g_free(full_errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1867 full_errmsg = suggestion;
27128
0a8129263401 Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents: 27127
diff changeset
1868 } else {
0a8129263401 Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents: 27127
diff changeset
1869 g_free(full_errmsg);
0a8129263401 Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents: 27127
diff changeset
1870 full_errmsg = g_strdup(_("Incorrect username or password"));
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1871 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1872 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1873 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1874 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1875 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1876 if (!purple_account_get_remember_password(session->account))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1877 purple_account_set_password(session->account, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1878 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1879 }
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
1880 purple_connection_error_reason(session->gc, reason, full_errmsg);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1881 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1882 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1883 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1884
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1885 g_free(full_errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1886
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1887 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1888 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1889
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1890 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1891 * Process a message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1892 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1893 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1894 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1895 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1896 * @return TRUE if successful. FALSE if processing failed.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1897 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1898 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1899 msim_process(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1900 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1901 g_return_val_if_fail(session != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1902 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1903
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1904 if (msim_msg_get_integer(msg, "lc") == 1) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1905 return msim_login_challenge(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1906 } else if (msim_msg_get_integer(msg, "lc") == 2) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1907 /* return msim_we_are_logged_on(session, msg); */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1908 if (msim_is_username_set(session, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1909 return msim_we_are_logged_on(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1910 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1911 /* No username is set... We'll wait for the callbacks to do their work */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1912 /* When they're all done, the last one will call msim_we_are_logged_on() and pick up where we left off */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1913 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1914 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1915 } else if (msim_msg_get(msg, "bm")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1916 return msim_incoming_bm(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1917 } else if (msim_msg_get(msg, "rid")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1918 return msim_process_reply(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1919 } else if (msim_msg_get(msg, "error")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1920 return msim_error(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1921 } else if (msim_msg_get(msg, "ka")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1922 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1923 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1924 msim_unrecognized(session, msg, "in msim_process");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1925 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1926 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1927 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1928
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1929 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1930 * After a uid is resolved to username, tag it with the username and submit for processing.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1931 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1932 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1933 * @param userinfo Response messsage to resolving request.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1934 * @param data MsimMessage *, the message to attach information to.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1935 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1936 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
1937 msim_incoming_resolved(MsimSession *session, const MsimMessage *userinfo,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1938 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1939 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1940 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1941 MsimMessage *msg, *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1942
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1943 g_return_if_fail(userinfo != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1944
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1945 body = msim_msg_get_dictionary(userinfo, "body");
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
1946 g_return_if_fail(body != NULL);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1947
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1948 username = msim_msg_get_string(body, "UserName");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1949 g_return_if_fail(username != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1950 /* Note: username will be owned by 'msg' below. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1951
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1952 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1953 g_return_if_fail(msg != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1954
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1955 /* TODO: more elegant solution than below. attach whole message? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1956 /* Special elements name beginning with '_', we'll use internally within the
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1957 * program (did not come directly from the wire). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1958 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, username); /* This makes 'msg' the owner of 'username' */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1959
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1960 /* TODO: attach more useful information, like ImageURL */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1961
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1962 msim_process(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1963
24885
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24805
diff changeset
1964 msim_msg_free(msg);
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
1965 msim_msg_free(body);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1966 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1967
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1968 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1969 * Preprocess incoming messages, resolving as needed, calling
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1970 * msim_process() when ready to process.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1971 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1972 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1973 * @param msg MsimMessage *, freed by caller.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1974 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1975 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1976 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1977 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1978 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1979
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1980 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1981 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1982 const gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1983
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1984 /* 'f' = userid message is from, in buddy messages */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1985 uid = msim_msg_get_integer(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1986
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1987 username = msim_uid2username_from_blist(session->account, uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1988
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1989 if (username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1990 /* Know username already, use it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1991 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1992 username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1993 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1994 return msim_process(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1995
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1996 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1997 gchar *from;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1998
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1999 /* Send lookup request. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2000 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2001 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2002 from = msim_msg_get_string(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2003 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2004 g_free(from);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2005
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2006 /* indeterminate */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2007 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2008 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2009 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2010 /* Nothing to resolve - send directly to processing. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2011 return msim_process(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2012 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2013 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2014
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2015 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2016 * Callback when input available.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2017 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2018 * @param gc_uncasted A PurpleConnection pointer.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2019 * @param source File descriptor.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2020 * @param cond PURPLE_INPUT_READ
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2021 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2022 * Reads the input, and calls msim_preprocess_incoming() to handle it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2023 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2024 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2025 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2026 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2027 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2028 PurpleAccount *account;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2029 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2030 gchar *end;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2031 int n;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2032
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2033 g_return_if_fail(gc_uncasted != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2034 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2035
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2036 gc = (PurpleConnection *)(gc_uncasted);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2037 account = purple_connection_get_account(gc);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2038 session = gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2039
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2040 /* libpurple/eventloop.h only defines these two */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2041 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2042 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2043 purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2044 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2045 _("Invalid input condition"));
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2046 return;
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2047 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2048
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2049 g_return_if_fail(cond == PURPLE_INPUT_READ);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2050
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2051 /* Mark down that we got data, so we don't timeout. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2052 session->last_comm = time(NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2053
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2054 /* If approaching end of buffer, reallocate some more memory. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2055 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2056 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2057 "msim_input_cb: %d-byte read buffer full, rxoff=%d, " "growing by %d bytes\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2058 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2059 session->rxsize += MSIM_READ_BUF_SIZE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2060 session->rxbuf = g_realloc(session->rxbuf, session->rxsize);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2061
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2062 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2063 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2064
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2065 purple_debug_info("msim", "dynamic buffer at %d (max %d), reading up to %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2066 session->rxoff, session->rxsize,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2067 MSIM_READ_BUF_SIZE - session->rxoff - 1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2068
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2069 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2070 * the file descriptor, but it sometimes differs from the 'source' parameter.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2071 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2072 n = recv(session->fd,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2073 session->rxbuf + session->rxoff,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2074 session->rxsize - session->rxoff - 1, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2075
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2076 if (n < 0) {
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2077 gchar *tmp;
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2078
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2079 if (errno == EAGAIN)
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2080 /* No worries */
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2081 return;
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2082
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2083 tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2084 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2085 purple_connection_error_reason(gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2086 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2087 g_free(tmp);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2088 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2089 } else if (n == 0) {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2090 purple_connection_error_reason(gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2091 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2092 _("Server closed the connection"));
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2093 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2094 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2095
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2096 /* Null terminate */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2097 purple_debug_info("msim", "msim_input_cb: going to null terminate "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2098 "at n=%d\n", n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2099 session->rxbuf[session->rxoff + n] = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2100
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2101 #ifdef MSIM_CHECK_EMBEDDED_NULLS
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2102 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2103 if (strlen(session->rxbuf + session->rxoff) != n) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2104 /* Occurs after login, but it is not a null byte. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2105 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2106 "--null byte encountered?\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2107 strlen(session->rxbuf + session->rxoff), n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2108 /*purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2109 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2110 "Invalid message - null byte on input"); */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2111 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2112 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2113 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2114
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2115 session->rxoff += n;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2116 purple_debug_info("msim", "msim_input_cb: read=%d\n", n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2117
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2118 #ifdef MSIM_DEBUG_RXBUF
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2119 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2120 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2121
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2122 /* Look for \\final\\ end markers. If found, process message. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2123 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2124 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2125
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2126 #ifdef MSIM_DEBUG_RXBUF
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2127 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2128 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2129 *end = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2130 msg = msim_parse(session->rxbuf);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2131 if (!msg) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2132 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2133 purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2134 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2135 _("Unable to parse message"));
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2136 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2137 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2138 /* Process message and then free it (processing function should
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2139 * clone message if it wants to keep it afterwards.) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2140 if (!msim_preprocess_incoming(session, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2141 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2142 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2143 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2144 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2145
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2146 /* Move remaining part of buffer to beginning. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2147 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2148 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2149 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2150
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2151 /* Clear end of buffer
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2152 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2153 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2154 }
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2155 }
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2156
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2157 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2158 * Callback when connected. Sets up input handlers.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2159 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2160 * @param data A PurpleConnection pointer.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2161 * @param source File descriptor.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2162 * @param error_message
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2163 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2164 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2165 msim_connect_cb(gpointer data, gint source, const gchar *error_message)
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2166 {
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2167 PurpleConnection *gc;
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2168 MsimSession *session;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2169
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2170 g_return_if_fail(data != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2171
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2172 gc = (PurpleConnection *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2173 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2174
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2175 if (source < 0) {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2176 gchar *tmp = g_strdup_printf(_("Unable to connect: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2177 error_message);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2178 purple_connection_error_reason (gc,
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2179 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2180 g_free(tmp);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2181 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2182 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2183
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2184 session->fd = source;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2185
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2186 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2187 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2188
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2189 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2190 * Start logging in to the MSIM servers.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2191 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2192 * @param acct Account information to use to login.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2193 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2194 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2195 msim_login(PurpleAccount *acct)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2196 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2197 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2198 const gchar *host;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2199 int port;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2200
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2201 g_return_if_fail(acct != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2202 g_return_if_fail(acct->username != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2203
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2204 purple_debug_info("msim", "logging in %s\n", acct->username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2205
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2206 gc = purple_account_get_connection(acct);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2207 gc->proto_data = msim_session_new(acct);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2208 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2209
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2210 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2211 * Lets wipe out our local list of blocked buddies. We'll get a
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2212 * list of all blocked buddies from the server, and we shouldn't
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2213 * have stuff in the local list that isn't on the server list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2214 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2215 while (acct->deny != NULL)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2216 purple_privacy_deny_remove(acct, acct->deny->data, TRUE);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2217
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2218 /* 1. connect to server */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2219 purple_connection_update_progress(gc, _("Connecting"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2220 0, /* which connection step this is */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2221 4); /* total number of steps */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2222
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2223 host = purple_account_get_string(acct, "server", MSIM_SERVER);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2224 port = purple_account_get_int(acct, "port", MSIM_PORT);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2225
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2226 /* From purple.sf.net/api:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2227 * """Note that this function name can be misleading--although it is called
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2228 * "proxy connect," it is used for establishing any outgoing TCP connection,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2229 * whether through a proxy or not.""" */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2230
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2231 /* Calls msim_connect_cb when connected. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2232 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2233 /* TODO: try other ports if in auto mode, then save
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2234 * working port and try that first next time. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2235 purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2236 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2237 _("Unable to connect"));
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2238 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2239 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2240 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2241
28975
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2242 static void
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2243 msim_buddy_free(PurpleBuddy *buddy)
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2244 {
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2245 msim_user_free(purple_buddy_get_protocol_data(buddy));
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2246 purple_buddy_set_protocol_data(buddy, NULL);
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2247 }
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2248
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2249 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2250 * Close the connection.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2251 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2252 * @param gc The connection.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2253 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2254 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2255 msim_close(PurpleConnection *gc)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2256 {
28975
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2257 GSList *buddies;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2258 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2259
28975
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2260 /*
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2261 * Free our protocol-specific buddy data. It almost seems like libpurple
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2262 * should call our buddy_free prpl callback so that we don't need to do
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2263 * this... but it doesn't, so we do.
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2264 */
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2265 buddies = purple_blist_get_buddies();
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2266 while (buddies != NULL) {
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2267 msim_buddy_free(buddies->data);
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2268 buddies = g_slist_delete_link(buddies, buddies);
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2269 }
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2270
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2271 if (gc == NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2272 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2273 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2274
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2275 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2276 if (session == NULL)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2277 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2278
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2279 gc->proto_data = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2280
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2281 if (session->gc->inpa) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2282 purple_input_remove(session->gc->inpa);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2283 }
24802
075d700fdc75 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents: 24798
diff changeset
2284 if (session->fd >= 0) {
075d700fdc75 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents: 24798
diff changeset
2285 close(session->fd);
075d700fdc75 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents: 24798
diff changeset
2286 session->fd = -1;
075d700fdc75 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents: 24798
diff changeset
2287 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2288
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2289 msim_session_destroy(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2290 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2291
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2292 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2293 * Schedule an IM to be sent once the user ID is looked up.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2294 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2295 * @param gc Connection.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2296 * @param who A user id, email, or username to send the message to.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2297 * @param message Instant message text to send.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2298 * @param flags Flags.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2299 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2300 * @return 1 if successful or postponed, -1 if failed
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2301 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2302 * Allows sending to a user by username, email address, or userid. If
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2303 * a username or email address is given, the userid must be looked up.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2304 * This function does that by calling msim_postprocess_outgoing().
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2305 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2306 static int
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2307 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2308 PurpleMessageFlags flags)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2309 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2310 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2311 gchar *message_msim;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2312 int rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2313
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2314 g_return_val_if_fail(gc != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2315 g_return_val_if_fail(who != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2316 g_return_val_if_fail(message != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2317
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2318 /* 'flags' has many options, not used here. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2319
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2320 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2321
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2322 message_msim = html_to_msim_markup(session, message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2323
27154
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27137
diff changeset
2324 if (msim_send_bm(session, who, message_msim, MSIM_BM_ACTION_OR_IM_DELAYABLE)) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2325 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2326 * return 1 even if the message could not be sent, since I don't know if
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2327 * it has failed yet--because the IM is only sent after the userid is
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2328 * retrieved from the server (which happens after this function returns).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2329 * If an error does occur, it should be logged to the IM window.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2330 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2331 rc = 1;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2332 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2333 rc = -1;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2334 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2335
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2336 g_free(message_msim);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2337
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2338 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2339 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2340
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2341 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2342 * Handle when our user starts or stops typing to another user.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2343 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2344 * @param gc
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2345 * @param name The buddy name to which our user is typing to
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2346 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2347 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2348 * @return 0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2349 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2350 static unsigned int
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2351 msim_send_typing(PurpleConnection *gc, const gchar *name,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2352 PurpleTypingState state)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2353 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2354 const gchar *typing_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2355 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2356
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2357 g_return_val_if_fail(gc != NULL, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2358 g_return_val_if_fail(name != NULL, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2359
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2360 session = (MsimSession *)gc->proto_data;
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2361
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2362 switch (state) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2363 case PURPLE_TYPING:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2364 typing_str = "%typing%";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2365 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2366
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2367 case PURPLE_TYPED:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2368 case PURPLE_NOT_TYPING:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2369 default:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2370 typing_str = "%stoptyping%";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2371 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2372 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2373
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2374 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str);
27154
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27137
diff changeset
2375 msim_send_bm(session, name, typing_str, MSIM_BM_ACTION_OR_IM_INSTANT);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2376 return 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2377 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2378
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2379 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2380 * Callback for msim_get_info(), for when user info is received.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2381 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2382 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
2383 msim_get_info_cb(MsimSession *session, const MsimMessage *user_info_msg,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2384 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2385 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2386 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2387 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2388 PurpleNotifyUserInfo *user_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2389 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2390
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2391 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2392 orthogonality. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2393 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2394 g_return_if_fail(msg != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2395
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2396 username = msim_msg_get_string(msg, "user");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2397 if (!username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2398 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2399 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2400 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2401
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2402 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2403 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2404
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2405 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2406
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2407 if (!user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2408 /* User isn't on blist, create a temporary user to store info. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2409 user = g_new0(MsimUser, 1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2410 user->temporary_user = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2411 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2412
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2413 /* Update user structure with new information */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2414 msim_store_user_info(session, user_info_msg, user);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2415
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2416 user_info = purple_notify_user_info_new();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2417
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2418 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2419 msim_append_user_info(session, user_info, user, TRUE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2420
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2421 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2422 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2423
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2424 purple_notify_user_info_destroy(user_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2425
28889
5a367a023195 Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <mark@kingant.net>
parents: 27904
diff changeset
2426 if (user->temporary_user)
5a367a023195 Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <mark@kingant.net>
parents: 27904
diff changeset
2427 msim_user_free(user);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2428 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2429 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2430
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2431 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2432 * Retrieve a user's profile.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2433 * @param username Username, user ID, or email address to lookup.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2434 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2435 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2436 msim_get_info(PurpleConnection *gc, const gchar *username)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2437 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2438 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2439 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2440 gchar *user_to_lookup;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2441 MsimMessage *user_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2442
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2443 g_return_if_fail(gc != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2444 g_return_if_fail(username != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2445
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2446 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2447
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2448 /* Obtain uid of buddy. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2449 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2450
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2451 /* If is on buddy list, lookup by uid since it is faster. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2452 if (user && user->id) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2453 user_to_lookup = g_strdup_printf("%d", user->id);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2454 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2455 /* Looking up buddy not on blist. Lookup by whatever user entered. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2456 user_to_lookup = g_strdup(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2457 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2458
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2459 /* Pass the username to msim_get_info_cb(), because since we lookup
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2460 * by userid, the userinfo message will only contain the uid (not
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2461 * the username) but it would be useful to display the username too.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2462 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2463 user_msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2464 "user", MSIM_TYPE_STRING, g_strdup(username),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2465 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2466 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2467
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2468 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2469
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2470 g_free(user_to_lookup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2471 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2472
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2473 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2474 * Set status using an MSIM_STATUS_CODE_* value.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2475 * @param status_code An MSIM_STATUS_CODE_* value.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2476 * @param statstring Status string, must be a dynamic string (will be freed by msim_send).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2477 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2478 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2479 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2480 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2481 g_return_if_fail(statstring != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2482
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2483 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2484 status_code, statstring);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2485
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2486 if (!msim_send(session,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2487 "status", MSIM_TYPE_INTEGER, status_code,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2488 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2489 "statstring", MSIM_TYPE_STRING, statstring,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2490 "locstring", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2491 NULL))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2492 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2493 purple_debug_info("msim", "msim_set_status: failed to set status\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2494 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2495 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2496
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2497 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2498 * Set your status - callback for when user manually sets it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2499 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2500 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2501 msim_set_status(PurpleAccount *account, PurpleStatus *status)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2502 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2503 PurpleStatusType *type;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2504 PurplePresence *pres;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2505 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2506 guint status_code;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2507 const gchar *message;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2508 gchar *stripped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2509 gchar *unrecognized_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2510
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2511 session = (MsimSession *)account->gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2512
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2513 type = purple_status_get_type(status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2514 pres = purple_status_get_presence(status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2515
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2516 switch (purple_status_type_get_primitive(type)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2517 case PURPLE_STATUS_AVAILABLE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2518 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2519 MSIM_STATUS_CODE_ONLINE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2520 status_code = MSIM_STATUS_CODE_ONLINE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2521 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2522
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2523 case PURPLE_STATUS_INVISIBLE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2524 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2525 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2526 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2527 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2528
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2529 case PURPLE_STATUS_AWAY:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2530 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2531 MSIM_STATUS_CODE_AWAY);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2532 status_code = MSIM_STATUS_CODE_AWAY;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2533 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2534
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2535 default:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2536 purple_debug_info("msim", "msim_set_status: unknown "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2537 "status interpreting as online");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2538 status_code = MSIM_STATUS_CODE_ONLINE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2539
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2540 unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2541 purple_status_type_get_primitive(type));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2542 msim_unrecognized(session, NULL, unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2543 g_free(unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2544
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2545 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2546 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2547
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2548 message = purple_status_get_attr_string(status, "message");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2549
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2550 /* Status strings are plain text. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2551 if (message != NULL)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2552 stripped = purple_markup_strip_html(message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2553 else
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2554 stripped = g_strdup("");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2555
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2556 msim_set_status_code(session, status_code, stripped);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2557
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2558 /* If we should be idle, set that status. Time is irrelevant here. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2559 if (purple_presence_is_idle(pres) && status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2560 msim_set_idle(account->gc, 1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2561 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2562
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2563 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2564 * Go idle.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2565 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2566 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2567 msim_set_idle(PurpleConnection *gc, int time)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2568 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2569 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2570 PurpleStatus *status;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2571
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2572 g_return_if_fail(gc != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2573
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2574 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2575
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2576 status = purple_account_get_active_status(session->account);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2577
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2578 if (time == 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2579 /* Going back from idle. In msim, idle is mutually exclusive
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2580 * from the other states (you can only be away or idle, but not
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2581 * both, for example), so by going non-idle I go back to what
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2582 * libpurple says I should be.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2583 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2584 msim_set_status(session->account, status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2585 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2586 const gchar *message;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2587 gchar *stripped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2588
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2589 /* Set the idle message to the status message from the real
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2590 * current status.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2591 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2592 message = purple_status_get_attr_string(status, "message");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2593 if (message != NULL)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2594 stripped = purple_markup_strip_html(message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2595 else
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2596 stripped = g_strdup("");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2597
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2598 /* msim doesn't support idle time, so just go idle */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2599 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2600 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2601 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2602
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2603 /**
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2604 * @return TRUE if everything was ok, FALSE if something went awry.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2605 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2606 static gboolean
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2607 msim_update_blocklist_for_buddy(MsimSession *session, const char *name, gboolean allow, gboolean block)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2608 {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2609 MsimMessage *msg;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2610 GList *list;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2611
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2612 list = NULL;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2613 list = g_list_prepend(list, allow ? "a+" : "a-");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2614 list = g_list_prepend(list, "<uid>");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2615 list = g_list_prepend(list, block ? "b+" : "b-");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2616 list = g_list_prepend(list, "<uid>");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2617 list = g_list_reverse(list);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2618
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2619 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2620 "blocklist", MSIM_TYPE_BOOLEAN, TRUE,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2621 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2622 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2623 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2624 "idlist", MSIM_TYPE_LIST, list,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2625 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2626
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2627 if (!msim_postprocess_outgoing(session, msg, name, "idlist", NULL)) {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2628 purple_debug_error("myspace",
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2629 "blocklist command failed for %s, allow=%d, block=%d\n",
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2630 name, allow, block);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2631 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2632 return FALSE;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2633 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2634
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2635 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2636
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2637 return TRUE;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2638 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2639
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2640 /**
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2641 * Add a buddy to user's buddy list.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2642 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2643 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2644 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2645 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2646 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2647 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2648 MsimMessage *msg_persist;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2649 MsimMessage *body;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2650 const char *name, *gname;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2651
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2652 session = (MsimSession *)gc->proto_data;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2653 name = purple_buddy_get_name(buddy);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2654 gname = group ? purple_group_get_name(group) : NULL;
25172
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24464
diff changeset
2655
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24464
diff changeset
2656 if (msim_get_user_from_buddy(buddy, FALSE) != NULL)
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24464
diff changeset
2657 return;
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24464
diff changeset
2658
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2659 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n",
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2660 name, gname ? gname : "(no group)");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2661
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2662 msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2663 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2664 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2665 /* "newprofileid" will be inserted here with uid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2666 "reason", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2667 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2668
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2669 if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2670 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2671 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2672 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2673 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2674 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2675
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2676 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2677 * buddy list since Purple adds it locally. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2678
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2679 body = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2680 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2681 "GroupName", MSIM_TYPE_STRING, g_strdup(gname),
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2682 "Position", MSIM_TYPE_INTEGER, 1000,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2683 "Visibility", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2684 "NickName", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2685 "NameSelect", MSIM_TYPE_INTEGER, 0,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2686 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2687
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2688 /* TODO: Update blocklist. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2689
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2690 msg_persist = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2691 "persist", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2692 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2693 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2694 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2695 "uid", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2696 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2697 /* TODO: Use msim_new_reply_callback to get rid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2698 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2699 "body", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2700 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2701
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2702 if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL))
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2703 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2704 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2705 msim_msg_free(msg_persist);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2706 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2707 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2708 msim_msg_free(msg_persist);
24783
75ecd41a64ba Fix a bug where if "Show our presence only to people on our buddy list"
Mark Doliner <mark@kingant.net>
parents: 24782
diff changeset
2709
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2710 /* Add to allow list, remove from block list */
25887
47540809ae91 explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
parents: 24803 25886
diff changeset
2711 msim_update_blocklist_for_buddy(session, name, TRUE, FALSE);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2712 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2713
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2714 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2715 * Remove a buddy from the user's buddy list.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2716 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2717 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2718 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2719 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2720 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2721 MsimMessage *delbuddy_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2722 MsimMessage *persist_msg;
25886
a4a17fe80160 explicit merge of 'f7807039eeef499a403d638cbcb94060a1d33eea'
Richard Laager <rlaager@wiktel.com>
parents: 25885 24783
diff changeset
2723 const char *name;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2724
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2725 session = (MsimSession *)gc->proto_data;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2726 name = purple_buddy_get_name(buddy);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2727
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2728 delbuddy_msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2729 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2730 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2731 /* 'delprofileid' with uid will be inserted here. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2732 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2733
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2734 if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2735 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2736 msim_msg_free(delbuddy_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2737 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2738 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2739 msim_msg_free(delbuddy_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2740
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2741 persist_msg = msim_msg_new(
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2742 "persist", MSIM_TYPE_INTEGER, 1,
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2743 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2744 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2745 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2746 "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID,
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2747 "uid", MSIM_TYPE_INTEGER, session->userid,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2748 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2749 /* <uid> will be replaced by postprocessing */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2750 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2751 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2752
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2753 if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2754 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2755 msim_msg_free(persist_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2756 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2757 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2758 msim_msg_free(persist_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2759
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2760 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2761 * Remove from our approve list and from our block list (this
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2762 * doesn't seem like it would be necessary, but the official client
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2763 * does it)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2764 */
25892
b5df6cd20d8b Compile!
Richard Laager <rlaager@wiktel.com>
parents: 25891
diff changeset
2765 if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) {
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2766 purple_notify_error(NULL, NULL,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2767 _("Failed to remove buddy"), _("blocklist command failed"));
24885
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24805
diff changeset
2768 return;
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24805
diff changeset
2769 }
25891
c0b42d6c2785 propagate from branch 'im.pidgin.pidgin' (head f018e11a7ea08e07f22667e6daca2ec7e64f9710)
Richard Laager <rlaager@wiktel.com>
parents: 25888 24885
diff changeset
2770 msim_buddy_free(buddy);
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2771 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2772
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2773 /**
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2774 * Remove a buddy from the user's buddy list and add them to the block list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2775 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2776 static void
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2777 msim_add_deny(PurpleConnection *gc, const char *name)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2778 {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2779 MsimSession *session;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2780 MsimMessage *msg, *body;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2781
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2782 session = (MsimSession *)gc->proto_data;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2783
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2784 /* Remove from buddy list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2785 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2786 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2787 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2788 /* 'delprofileid' with uid will be inserted here. */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2789 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2790 if (!msim_postprocess_outgoing(session, msg, name, "delprofileid", NULL))
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2791 purple_debug_error("myspace", "delbuddy command failed\n");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2792 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2793
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2794 /* Remove from our approve list and add to our block list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2795 msim_update_blocklist_for_buddy(session, name, FALSE, TRUE);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2796
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2797 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2798 * Add the buddy to our list of blocked contacts, so we know they
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2799 * are blocked if we log in with another client
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2800 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2801 body = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2802 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2803 "Visibility", MSIM_TYPE_INTEGER, 2,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2804 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2805 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2806 "persist", MSIM_TYPE_INTEGER, 1,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2807 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2808 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2809 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2810 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2811 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2812 "body", MSIM_TYPE_DICTIONARY, body,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2813 NULL);
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2814 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL))
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2815 purple_debug_error("myspace", "add to block list command failed\n");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2816 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2817
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2818 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2819 * TODO: MySpace doesn't allow blocked buddies on our buddy list,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2820 * do they? If not then we need to remove the buddy from
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2821 * libpurple's buddy list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2822 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2823 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2824
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2825 /**
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2826 * Remove a buddy from the user's block list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2827 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2828 static void
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2829 msim_rem_deny(PurpleConnection *gc, const char *name)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2830 {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2831 MsimSession *session;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2832 MsimMessage *msg, *body;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2833
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2834 session = (MsimSession *)gc->proto_data;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2835
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2836 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2837 * Remove from our list of blocked contacts, so we know they
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2838 * are no longer blocked if we log in with another client
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2839 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2840 body = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2841 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2842 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2843 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2844 "persist", MSIM_TYPE_INTEGER, 1,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2845 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2846 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2847 "dsn", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_DSN,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2848 "lid", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_LID,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2849 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2850 "body", MSIM_TYPE_DICTIONARY, body,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2851 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2852 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL))
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2853 purple_debug_error("myspace", "remove from block list command failed\n");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2854 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2855
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2856 /* Remove from our approve list and our block list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2857 msim_update_blocklist_for_buddy(session, name, FALSE, FALSE);
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2858 }
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2859
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2860 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2861 * Returns a string of a username in canonical form. Basically removes all the
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2862 * spaces, lowercases the string, and looks up user IDs to usernames.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2863 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2864 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2865 * Borrowed this code from oscar_normalize. Added checking for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2866 * "if userid, get name before normalizing"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2867 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2868 static const char *msim_normalize(const PurpleAccount *account, const char *str) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2869 static char normalized[BUF_LEN];
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2870 char *tmp1, *tmp2;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2871 int i, j;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2872 guint id;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2873
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2874 g_return_val_if_fail(str != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2875
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2876 if (msim_is_userid(str)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2877 /* Have user ID, we need to get their username first :) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2878 const char *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2879
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2880 /* If the account does not exist, we can't look up the user. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2881 if (!account || !account->gc)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2882 return str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2883
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2884 id = atol(str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2885 username = msim_uid2username_from_blist((PurpleAccount *)account, id);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2886 if (!username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2887 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2888 /* Note: manual lookup using msim_lookup_user() is a problem inside
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2889 * msim_normalize(), because msim_lookup_user() calls a callback function
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2890 * when the user information has been looked up, but msim_normalize() expects
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2891 * the result immediately. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2892 strncpy(normalized, str, BUF_LEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2893 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2894 strncpy(normalized, username, BUF_LEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2895 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2896 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2897 /* Have username. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2898 strncpy(normalized, str, BUF_LEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2899 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2900
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2901 /* Strip spaces. */
24922
cead8692e35f Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24885
diff changeset
2902 for (i=0, j=0; normalized[j]; j++) {
cead8692e35f Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24885
diff changeset
2903 if (normalized[j] != ' ')
cead8692e35f Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24885
diff changeset
2904 normalized[i++] = normalized[j];
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2905 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2906 normalized[i] = '\0';
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2907
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2908 /* Lowercase and perform UTF-8 normalization. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2909 tmp1 = g_utf8_strdown(normalized, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2910 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2911 g_snprintf(normalized, sizeof(normalized), "%s", tmp2);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2912 g_free(tmp2);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2913 g_free(tmp1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2914
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2915 /* TODO: re-add caps and spacing back to what the user wanted.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2916 * User can format their own names, for example 'msimprpl' is shown
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2917 * as 'MsIm PrPl' in the official client.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2918 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2919 * TODO: file a ticket to add this enhancement.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2920 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2921
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2922 return normalized;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2923 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2924
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2925 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2926 * Return whether the buddy can be messaged while offline.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2927 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2928 * The protocol supports offline messages in just the same way as online
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2929 * messages.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2930 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2931 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2932 msim_offline_message(const PurpleBuddy *buddy)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
2933 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2934 return TRUE;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
2935 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
2936
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2937 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2938 * Send raw data to the server, possibly with embedded NULs.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2939 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2940 * Used in prpl_info struct, so that plugins can have the most possible
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2941 * control of what is sent over the connection. Inside this prpl,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2942 * msim_send_raw() is used, since it sends NUL-terminated strings (easier).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2943 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2944 * @param gc PurpleConnection
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2945 * @param buf Buffer to send
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2946 * @param total_bytes Size of buffer to send
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2947 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2948 * @return Bytes successfully sent, or -1 on error.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2949 */
24778
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24771
diff changeset
2950 /*
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24771
diff changeset
2951 * TODO: This needs to do non-blocking writes and use a watcher to check
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24771
diff changeset
2952 * when the fd is available to be written to.
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24771
diff changeset
2953 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2954 static int
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2955 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2956 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2957 int total_bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2958 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2959
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2960 g_return_val_if_fail(gc != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2961 g_return_val_if_fail(buf != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2962 g_return_val_if_fail(total_bytes >= 0, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2963
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2964 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2965
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2966 /* Loop until all data is sent, or a failure occurs. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2967 total_bytes_sent = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2968 do {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2969 int bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2970
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2971 bytes_sent = send(session->fd, buf + total_bytes_sent,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2972 total_bytes - total_bytes_sent, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2973
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2974 if (bytes_sent < 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2975 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2976 buf, g_strerror(errno));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2977 return total_bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2978 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2979 total_bytes_sent += bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2980
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2981 } while(total_bytes_sent < total_bytes);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2982
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2983 return total_bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2984 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2985
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2986 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2987 * Send raw data (given as a NUL-terminated string) to the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2988 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2989 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2990 * @param msg The raw data to send, in a NUL-terminated string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2991 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2992 * @return TRUE if succeeded, FALSE if not.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2993 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2994 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2995 gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2996 msim_send_raw(MsimSession *session, const gchar *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2997 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2998 size_t len;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2999
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3000 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3001
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3002 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3003 len = strlen(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3004
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3005 return msim_send_really_raw(session->gc, msg, len) == len;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3006 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3007
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3008 static GHashTable *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3009 msim_get_account_text_table(PurpleAccount *unused)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3010 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3011 GHashTable *table;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3012
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3013 table = g_hash_table_new(g_str_hash, g_str_equal);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3014
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3015 g_hash_table_insert(table, "login_label", (gpointer)_("Email Address..."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3016
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3017 return table;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3018 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3019
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3020 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3021 * Callbacks called by Purple, to access this plugin.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3022 */
20057
27754fc4d72e static this.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19750
diff changeset
3023 static PurplePluginProtocolInfo prpl_info = {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3024 /* options */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3025 OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3026 | OPT_PROTO_MAIL_CHECK,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3027
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3028 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3029 NULL, /* user_splits */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3030 NULL, /* protocol_options */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3031 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3032 msim_list_icon, /* list_icon */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3033 NULL, /* list_emblems */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3034 msim_status_text, /* status_text */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3035 msim_tooltip_text, /* tooltip_text */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3036 msim_status_types, /* status_types */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3037 msim_blist_node_menu, /* blist_node_menu */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3038 NULL, /* chat_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3039 NULL, /* chat_info_defaults */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3040 msim_login, /* login */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3041 msim_close, /* close */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3042 msim_send_im, /* send_im */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3043 NULL, /* set_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3044 msim_send_typing, /* send_typing */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3045 msim_get_info, /* get_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3046 msim_set_status, /* set_status */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3047 msim_set_idle, /* set_idle */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3048 NULL, /* change_passwd */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3049 msim_add_buddy, /* add_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3050 NULL, /* add_buddies */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3051 msim_remove_buddy, /* remove_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3052 NULL, /* remove_buddies */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3053 NULL, /* add_permit */
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
3054 msim_add_deny, /* add_deny */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3055 NULL, /* rem_permit */
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
3056 msim_rem_deny, /* rem_deny */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3057 NULL, /* set_permit_deny */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3058 NULL, /* join_chat */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3059 NULL, /* reject chat invite */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3060 NULL, /* get_chat_name */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3061 NULL, /* chat_invite */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3062 NULL, /* chat_leave */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3063 NULL, /* chat_whisper */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3064 NULL, /* chat_send */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3065 NULL, /* keepalive */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3066 NULL, /* register_user */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3067 NULL, /* get_cb_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3068 NULL, /* get_cb_away */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3069 NULL, /* alias_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3070 NULL, /* group_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3071 NULL, /* rename_group */
24885
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24805
diff changeset
3072 msim_buddy_free, /* buddy_free */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3073 NULL, /* convo_closed */
22100
1226083ed7e2 Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21950
diff changeset
3074 msim_normalize, /* normalize */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3075 NULL, /* set_buddy_icon */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3076 NULL, /* remove_group */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3077 NULL, /* get_cb_real_name */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3078 NULL, /* set_chat_topic */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3079 NULL, /* find_blist_chat */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3080 NULL, /* roomlist_get_list */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3081 NULL, /* roomlist_cancel */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3082 NULL, /* roomlist_expand_category */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3083 NULL, /* can_receive_file */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3084 NULL, /* send_file */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3085 NULL, /* new_xfer */
19243
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3086 msim_offline_message, /* offline_message */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3087 NULL, /* whiteboard_prpl_ops */
19243
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3088 msim_send_really_raw, /* send_raw */
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3089 NULL, /* roomlist_room_serialize */
19713
eabc8a32b1e4 Fix up an apparently bad merge with the reserved fields here.
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
3090 NULL, /* unregister_user */
19243
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3091 msim_send_attention, /* send_attention */
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3092 msim_attention_types, /* attention_types */
24986
f0c2e27c7ae7 propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24978 24885
diff changeset
3093 sizeof(PurplePluginProtocolInfo), /* struct_size */
23110
bb41bdce8981 Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23109
diff changeset
3094 msim_get_account_text_table, /* get_account_text_table */
24986
f0c2e27c7ae7 propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24978 24885
diff changeset
3095 NULL, /* initiate_media */
f0c2e27c7ae7 propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24978 24885
diff changeset
3096 NULL /* can_do_media */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3097 };
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3098
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3099 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3100 * Load the plugin.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3101 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3102 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3103 msim_load(PurplePlugin *plugin)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3104 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3105 /* If compiled to use RC4 from libpurple, check if it is really there. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3106 if (!purple_ciphers_find_cipher("rc4")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3107 purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3108 purple_notify_error(plugin, _("Missing Cipher"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3109 _("The RC4 cipher could not be found"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3110 _("Upgrade "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3111 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3112 "plugin will not be loaded."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3113 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3114 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3115 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3116 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3117
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3118 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3119 * Called when friends have been imported to buddy list on server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3120 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3121 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
3122 msim_import_friends_cb(MsimSession *session, const MsimMessage *reply, gpointer user_data)
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3123 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3124 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3125 gchar *completed;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3126
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3127 /* Check if the friends were imported successfully. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3128 body = msim_msg_get_dictionary(reply, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3129 g_return_if_fail(body != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3130 completed = msim_msg_get_string(body, "Completed");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3131 msim_msg_free(body);
25538
27e6ab4ff554 This should fix a sporadic crash? The behavior before was clearly wrong--
Mark Doliner <mark@kingant.net>
parents: 25419
diff changeset
3132 g_return_if_fail(completed != NULL);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3133 if (!g_str_equal(completed, "True"))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3134 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3135 purple_debug_info("msim_import_friends_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3136 "failed to import friends: %s", completed);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3137 purple_notify_error(session->account, _("Add friends from MySpace.com"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3138 _("Importing friends failed"), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3139 g_free(completed);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3140 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3141 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3142 g_free(completed);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3143
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3144 purple_debug_info("msim_import_friends_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3145 "added friends to server-side buddy list, requesting new contacts from server");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3146
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3147 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3148
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3149 /* TODO: show, X friends have been added */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3150 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3151
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3152 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3153 * Import friends from myspace.com.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3154 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3155 static void msim_import_friends(PurplePluginAction *action)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3156 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3157 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3158 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3159 gchar *group_name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3160
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3161 gc = (PurpleConnection *)action->context;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3162 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3163
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3164 group_name = "MySpace Friends";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3165
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3166 g_return_if_fail(msim_send(session,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3167 "persist", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3168 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3169 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3170 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3171 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3172 "uid", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3173 "rid", MSIM_TYPE_INTEGER,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3174 msim_new_reply_callback(session, msim_import_friends_cb, NULL),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3175 "body", MSIM_TYPE_STRING,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3176 g_strdup_printf("GroupName=%s", group_name),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3177 NULL));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3178 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3179
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3180 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3181 * Actions menu for account.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3182 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3183 static GList *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3184 msim_actions(PurplePlugin *plugin, gpointer context)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3185 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3186 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3187 GList *menu;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3188 PurplePluginAction *act;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3189
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3190 gc = (PurpleConnection *)context;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3191
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3192 menu = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3193
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3194 #if 0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3195 /* TODO: find out how */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3196 act = purple_plugin_action_new(_("Find people..."), msim_);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3197 menu = g_list_append(menu, act);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3198
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3199 act = purple_plugin_action_new(_("Change IM name..."), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3200 menu = g_list_append(menu, act);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3201 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3202
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3203 act = purple_plugin_action_new(_("Add friends from MySpace.com"), msim_import_friends);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3204 menu = g_list_append(menu, act);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3205
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3206 return menu;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3207 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3208
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3209 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3210 * Based on MSN's plugin info comments.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3211 */
19721
b2d213681176 Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <pidgin@unreliablesource.net>
parents: 19714
diff changeset
3212 static PurplePluginInfo info = {
23109
718a9c287839 Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23105
diff changeset
3213 PURPLE_PLUGIN_MAGIC,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3214 PURPLE_MAJOR_VERSION,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3215 PURPLE_MINOR_VERSION,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3216 PURPLE_PLUGIN_PROTOCOL, /**< type */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3217 NULL, /**< ui_requirement */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3218 0, /**< flags */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3219 NULL, /**< dependencies */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3220 PURPLE_PRIORITY_DEFAULT, /**< priority */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3221
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3222 "prpl-myspace", /**< id */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3223 "MySpaceIM", /**< name */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3224 MSIM_PRPL_VERSION_STRING, /**< version */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3225 /** summary */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3226 "MySpaceIM Protocol Plugin",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3227 /** description */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3228 "MySpaceIM Protocol Plugin",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3229 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3230 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3231
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3232 msim_load, /**< load */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3233 NULL, /**< unload */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3234 NULL, /**< destroy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3235 NULL, /**< ui_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3236 &prpl_info, /**< extra_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3237 NULL, /**< prefs_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3238 msim_actions, /**< msim_actions */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3239 NULL, /**< reserved1 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3240 NULL, /**< reserved2 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3241 NULL, /**< reserved3 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3242 NULL /**< reserved4 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3243 };
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3244
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3245 #ifdef MSIM_SELF_TEST
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3246 /*
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3247 * Test functions.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3248 * Used to test or try out the internal workings of msimprpl. If you're reading
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3249 * this code for the first time, these functions can be instructive in learning
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3250 * how msimprpl is architected.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3251 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3252
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3253 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3254 * Test MsimMessage for basic functionality.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3255 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3256 static int
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3257 msim_test_msg(void)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3258 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3259 MsimMessage *msg, *msg_cloned, *msg2;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3260 GList *list;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3261 gchar *packed, *packed_expected, *packed_cloned;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3262 guint failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3263
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3264 failures = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3265
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3266 purple_debug_info("msim", "\n\nTesting MsimMessage\n");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3267 msg = msim_msg_new(NULL); /* Create a new, empty message. */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3268
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3269 /* Append some new elements. */
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
3270 msg = msim_msg_append(msg, "bx", MSIM_TYPE_BINARY, g_string_new_len("XXX", 3));
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3271 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1"));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3272 msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3273 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43"));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3274 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v52/xxx\\yyy"));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3275 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7"));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3276 msim_msg_dump("msg debug str=%s\n", msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3277 packed = msim_msg_pack(msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3278
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3279 purple_debug_info("msim", "msg packed=%s\n", packed);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3280
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3281 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1"
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3282 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\";
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3283
19428
1fa10842eb83 In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19427
diff changeset
3284 if (!g_str_equal(packed, packed_expected)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3285 purple_debug_info("msim", "!!!(%d), msim_msg_pack not what expected: %s != %s\n",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3286 ++failures, packed, packed_expected);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3287 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3288
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3289
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3290 msg_cloned = msim_msg_clone(msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3291 packed_cloned = msim_msg_pack(msg_cloned);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3292
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3293 purple_debug_info("msim", "msg cloned=%s\n", packed_cloned);
19428
1fa10842eb83 In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19427
diff changeset
3294 if (!g_str_equal(packed, packed_cloned)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3295 purple_debug_info("msim", "!!!(%d), msim_msg_pack on cloned message not equal to original: %s != %s\n",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3296 ++failures, packed_cloned, packed);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3297 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3298
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3299 g_free(packed);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3300 g_free(packed_cloned);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3301 msim_msg_free(msg_cloned);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3302 msim_msg_free(msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3303
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3304 /* Try some of the more advanced functionality */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3305 list = NULL;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3306
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3307 list = g_list_prepend(list, "item3");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3308 list = g_list_prepend(list, "item2");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3309 list = g_list_prepend(list, "item1");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3310 list = g_list_prepend(list, "item0");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3311
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3312 msg = msim_msg_new(NULL);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3313 msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value"));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3314 msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value"));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3315 msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3316 msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3317 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3318
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3319 msim_msg_dump("msg with list=%s\n", msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3320 purple_debug_info("msim", "msg with list packed=%s\n", msim_msg_pack(msg));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3321
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3322 msg2 = msim_msg_new(NULL);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3323 msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value"));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3324 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3325 msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3326 purple_debug_info("msim", "msg with dict packed=%s\n", msim_msg_pack(msg2));
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3327
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3328 msim_msg_free(msg2);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3329
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3330 return failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3331 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3332
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3333 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3334 * Test protocol-level escaping/unescaping.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3335 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3336 static int
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3337 msim_test_escaping(void)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3338 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3339 guint failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3340 gchar *raw, *escaped, *unescaped, *expected;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3341
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3342 failures = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3343
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3344 purple_debug_info("msim", "\n\nTesting escaping\n");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3345
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3346 raw = "hello/world\\hello/world";
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3347
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3348 escaped = msim_escape(raw);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3349 purple_debug_info("msim", "msim_test_escaping: raw=%s, escaped=%s\n", raw, escaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3350 expected = "hello/1world/2hello/1world";
19428
1fa10842eb83 In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19427
diff changeset
3351 if (!g_str_equal(escaped, expected)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3352 purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3353 ++failures, escaped, expected);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3354 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3355
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3356
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3357 unescaped = msim_unescape(escaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3358 g_free(escaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3359 purple_debug_info("msim", "msim_test_escaping: unescaped=%s\n", unescaped);
19428
1fa10842eb83 In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19427
diff changeset
3360 if (!g_str_equal(raw, unescaped)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3361 purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3362 ++failures, raw, unescaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3363 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3364
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3365 return failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3366 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3367
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3368 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3369 msim_test_all(void)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3370 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3371 guint failures;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3372
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3373 failures = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3374 failures += msim_test_msg();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3375 failures += msim_test_escaping();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3376
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3377 if (failures) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3378 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3379 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3380 purple_debug_info("msim", "msim_test_all - all tests passed!\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3381 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3382 exit(0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3383 }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3384 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3385
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3386 #ifdef MSIM_CHECK_NEWER_VERSION
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3387 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3388 * Callback for when a currentversion.txt has been downloaded.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3389 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3390 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3391 msim_check_newer_version_cb(PurpleUtilFetchUrlData *url_data,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3392 gpointer user_data,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3393 const gchar *url_text,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3394 gsize len,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3395 const gchar *error_message)
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3396 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3397 GKeyFile *keyfile;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3398 GError *error;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3399 GString *data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3400 gchar *newest_filever;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3401
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3402 if (!url_text) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3403 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3404 "got error: %s\n", error_message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3405 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3406 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3407
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3408 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3409 "url_text=%s\n", url_text ? url_text : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3410
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3411 /* Prepend [group] so that GKeyFile can parse it (requires a group). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3412 data = g_string_new(url_text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3413 purple_debug_info("msim", "data=%s\n", data->str
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3414 ? data->str : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3415 data = g_string_prepend(data, "[group]\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3416
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3417 purple_debug_info("msim", "data=%s\n", data->str
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3418 ? data->str : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3419
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3420 /* url_text is variable=data\n...†*/
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3421
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3422 /* Check FILEVER, 1.0.716.0. 716 is build, MSIM_CLIENT_VERSION */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3423 /* New (english) version can be downloaded from SETUPURL+SETUPFILE */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3424
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3425 error = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3426 keyfile = g_key_file_new();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3427
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3428 /* Default list seperator is ;, but currentversion.txt doesn't have
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3429 * these, so set to an unused character to avoid parsing problems. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3430 g_key_file_set_list_separator(keyfile, '\0');
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3431
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3432 g_key_file_load_from_data(keyfile, data->str, data->len,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3433 G_KEY_FILE_NONE, &error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3434 g_string_free(data, TRUE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3435
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3436 if (error != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3437 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3438 "couldn't parse, error: %d %d %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3439 error->domain, error->code, error->message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3440 g_error_free(error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3441 return;
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3442 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3443
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3444 gchar **ks;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3445 guint n;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3446 ks = g_key_file_get_keys(keyfile, "group", &n, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3447 purple_debug_info("msim", "n=%d\n", n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3448 guint i;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3449 for (i = 0; ks[i] != NULL; ++i)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3450 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3451 purple_debug_info("msim", "%d=%s\n", i, ks[i]);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3452 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3453
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3454 newest_filever = g_key_file_get_string(keyfile, "group",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3455 "FILEVER", &error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3456
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3457 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3458 "newest filever: %s\n", newest_filever ?
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3459 newest_filever : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3460 if (error != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3461 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3462 "error: %d %d %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3463 error->domain, error->code, error->message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3464 g_error_free(error);
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3465 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3466
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3467 g_key_file_free(keyfile);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3468
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3469 exit(0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3470 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3471 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3472
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3473 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3474 Handle a myim:addContact command, after username has been looked up.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3475 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3476 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3477 msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3478 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3479 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3480 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3481
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3482 body = msim_msg_get_dictionary(userinfo, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3483 username = msim_msg_get_string(body, "UserName");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3484 msim_msg_free(body);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3485
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3486 if (!username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3487 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3488
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3489 uid = msim_msg_get_integer(userinfo, "UserID");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3490 g_return_if_fail(uid != 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3491
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3492 username = g_strdup_printf("%d", uid);
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3493 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3494
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3495 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3496
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3497 g_free(username);
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3498 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3499
19441
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3500 /* TODO: move uid->username resolving to IM sending and buddy adding functions,
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3501 * so that user can manually add or IM by userid and username automatically
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3502 * looked up if possible? */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3503
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3504 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3505 * Handle a myim:sendIM URI command, after username has been looked up.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3506 */
19441
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3507 static void
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3508 msim_uri_handler_sendIM_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3509 {
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3510 PurpleConversation *conv;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3511 MsimMessage *body;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3512 gchar *username;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3513
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3514 body = msim_msg_get_dictionary(userinfo, "body");
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3515 username = msim_msg_get_string(body, "UserName");
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3516 msim_msg_free(body);
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3517
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3518 if (!username) {
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3519 guint uid;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3520
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3521 uid = msim_msg_get_integer(userinfo, "UserID");
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3522 g_return_if_fail(uid != 0);
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3523
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3524 username = g_strdup_printf("%d", uid);
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3525 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3526
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3527
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3528 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, username, session->account);
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3529 if (!conv) {
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3530 purple_debug_info("msim_uri_handler", "creating new conversation for %s\n", username);
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3531 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, session->account, username);
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3532 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3533
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3534 /* Just open the window so the user can send an IM. */
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3535 purple_conversation_present(conv);
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3536
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3537 g_free(username);
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3538 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3539
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3540 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3541 msim_uri_handler(const gchar *proto, const gchar *cmd, GHashTable *params)
19441
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3542 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3543 PurpleAccount *account;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3544 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3545 GList *l;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3546 gchar *uid_str, *cid_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3547 guint uid, cid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3548
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3549 if (g_ascii_strcasecmp(proto, "myim"))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3550 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3551
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3552 /* Parameters are case-insensitive. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3553 uid_str = g_hash_table_lookup(params, "uid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3554 cid_str = g_hash_table_lookup(params, "cid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3555
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3556 uid = uid_str ? atol(uid_str) : 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3557 cid = cid_str ? atol(cid_str) : 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3558
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3559 /* Need a contact. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3560 g_return_val_if_fail(cid != 0, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3561
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3562 /* TODO: if auto=true, "Add all the people on this page to my IM List!", on
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3563 * http://collect.myspace.com/index.cfm?fuseaction=im.friendslist. Don't need a cid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3564
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3565 /* Convert numeric contact ID back to a string. Needed for looking up. Don't just
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3566 * directly use cid directly from parameters, because it might not be numeric.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3567 * It is trivial to change this to allow cID to be a username, but that's not how
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3568 * the official MySpaceIM client works, so don't provide that functionality. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3569 cid_str = g_strdup_printf("%d", cid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3570
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3571
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3572 /* Find our account with specified user id, or use first connected account if uid=0. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3573 account = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3574 l = purple_accounts_get_all();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3575 while (l) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3576 if (purple_account_is_connected(l->data) &&
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3577 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3578 account = l->data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3579 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3580 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3581 l = l->next;
19441
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3582 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3583
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3584 if (!account) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3585 purple_notify_error(NULL, _("myim URL handler"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3586 _("No suitable MySpaceIM account could be found to open this myim URL."),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3587 _("Enable the proper MySpaceIM account and try again."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3588 g_free(cid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3589 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3590 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3591
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3592 session = (MsimSession *)account->gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3593 g_return_val_if_fail(session != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3594
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3595 /* Lookup userid to username. TODO: push this down, to IM sending/contact
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3596 * adding functions. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3597
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3598 /* myim:sendIM?uID=USERID&cID=CONTACTID */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3599 if (!g_ascii_strcasecmp(cmd, "sendIM")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3600 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_sendIM_cb, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3601 g_free(cid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3602 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3603
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3604 /* myim:addContact?uID=USERID&cID=CONTACTID */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3605 } else if (!g_ascii_strcasecmp(cmd, "addContact")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3606 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_addContact_cb, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3607 g_free(cid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3608 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3609 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3610
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3611 return FALSE;
19441
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3612 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3613
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3614 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3615 * Initialize plugin.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3616 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3617 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3618 init_plugin(PurplePlugin *plugin)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3619 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3620 #ifdef MSIM_SELF_TEST
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3621 msim_test_all();
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3622 exit(0);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3623 #endif /* MSIM_SELF_TEST */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3624
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3625 PurpleAccountOption *option;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3626 static gboolean initialized = FALSE;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3627
19598
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3628 #ifdef MSIM_CHECK_NEWER_VERSION
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3629 /* PROBLEM: MySpace's servers always return Content-Location, and
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3630 * libpurple redirects to it, infinitely, even though it is the same
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3631 * location we requested! */
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3632 purple_util_fetch_url("http://im.myspace.com/nsis/currentversion.txt",
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3633 FALSE, /* not full URL */
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3634 "MSIMAutoUpdateAgent", /* user agent */
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3635 TRUE, /* use HTTP/1.1 */
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3636 msim_check_newer_version_cb, NULL);
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3637 #endif
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3638
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3639 /* TODO: default to automatically try different ports. Make the user be
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3640 * able to set the first port to try (like LastConnectedPort in Windows client). */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3641 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3642 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3643
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3644 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3645 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3646
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3647 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3648 option = purple_account_option_bool_new(_("Show display name in status text"), "show_display_name", TRUE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3649 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3650
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3651 option = purple_account_option_bool_new(_("Show headline in status text"), "show_headline", TRUE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3652 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3653 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3654
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3655 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS
19734
0844b0638f0b 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 <evan.s@dreskin.net>
parents: 19721
diff changeset
3656 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", TRUE);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3657 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3658 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3659
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3660 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3661 option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3662 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3663
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3664 option = purple_account_option_int_new(_("Base font size (points)"), "base_font_size", MSIM_BASE_FONT_POINT_SIZE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3665 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3666 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3667
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3668 /* Code below only runs once. Based on oscar.c's oscar_init(). */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3669 if (initialized)
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3670 return;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3671
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3672 initialized = TRUE;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3673
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3674 purple_signal_connect(purple_get_core(), "uri-handler", &initialized,
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3675 PURPLE_CALLBACK(msim_uri_handler), NULL);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3676 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3677
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3678 PURPLE_INIT_PLUGIN(myspace, init_plugin, info);