annotate libpurple/protocols/myspace/myspace.c @ 28233:b59aa0c36b2b

Ignore unknown MySpace messages instead of trying to treat them like normal IMs. This can cause problems if MySpace ever sends an uknown message type and we try to treat it as an IM.
author Mark Doliner <mark@kingant.net>
date Thu, 13 Aug 2009 00:01:21 +0000
parents f541583e31bd
children e4b0bf56667f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19660
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
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
39 #include "privacy.h"
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
40
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
41 static void msim_set_status(PurpleAccount *account, PurpleStatus *status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
42 static void msim_set_idle(PurpleConnection *gc, int time);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
43
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
44 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
46 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
47 * @param msg The message to postprocess.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
diff changeset
50 * @param uid The userid to insert.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
51 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
diff changeset
54 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
diff changeset
57 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
59 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
60 static MsimMessage *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
61 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
62 const gchar *uid_field_name, guint uid)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
63 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
64 MsimMessageElement *elem;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
65
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
diff changeset
68 gchar *fmt_string;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
69 gchar *uid_str, *new_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
70
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
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: 24728
diff changeset
74 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
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: 24728
diff changeset
78 * just by a string replacement.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
79 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
80 fmt_string = msim_msg_pack_element_data(elem);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
81
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
82 uid_str = g_strdup_printf("%d", uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
83 new_str = purple_strreplace(fmt_string, "<uid>", uid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
84 g_free(uid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
85 g_free(fmt_string);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
86
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
87 /* Free the old element data */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
88 msim_msg_free_element_data(elem->data);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
89
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
90 /* Replace it with our new data */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
91 elem->data = new_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
92 elem->type = MSIM_TYPE_RAW;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
93
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
94 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
95 /* Otherwise, insert new field into outgoing message. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
97 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
98
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
99 return msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
100 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
101
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
102 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
104 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
105 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
107 * @param data The message to postprocess and send.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
108 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
109 * The data message should contain these fields:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
110 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
diff changeset
113 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
114 static void
24764
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24763
diff changeset
115 msim_postprocess_outgoing_cb(MsimSession *session, const MsimMessage *userinfo,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
116 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
117 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
118 gchar *uid_field_name, *uid_before, *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
119 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
120 MsimMessage *msg, *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
121
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
122 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
123
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
124 /* Obtain userid from userinfo message. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
125 body = msim_msg_get_dictionary(userinfo, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
126 g_return_if_fail(body != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
127
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
128 uid = msim_msg_get_integer(body, "UserID");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
129 msim_msg_free(body);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
130
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
131 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
132
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
133 if (!uid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
134 gchar *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
135
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
136 msg = g_strdup_printf(_("No such user: %s"), username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
137 if (!purple_conv_present_error(username, session->account, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
138 purple_notify_error(NULL, NULL, _("User lookup"), msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
139 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
140
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
141 g_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
142 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
143 /* TODO: free
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
144 * msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
145 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
146 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
147 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
148
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
150 uid_before = msim_msg_get_string(msg, "_uid_before");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
151
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
153
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
154 /* Send */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
155 if (!msim_msg_send(session, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
157 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
158
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
159
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
diff changeset
162 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
163 g_free(uid_field_name);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
164 g_free(uid_before);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
165 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
166 /* TODO: free
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
167 * msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
168 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
169 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
170
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
171 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
172 * Postprocess and send a message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
173 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
174 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
175 * @param msg Message to postprocess. Will NOT be freed.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
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: 24728
diff changeset
179 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
180 * @return TRUE if successful.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
181 */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
182 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
183 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
184 const gchar *username, const gchar *uid_field_name,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
185 const gchar *uid_before)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
186 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
187 PurpleBuddy *buddy;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
188 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
189 gboolean rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
190
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
191 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
192
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
193 /* Store information for msim_postprocess_outgoing_cb(). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
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: 24728
diff changeset
197
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
199 if (msim_is_userid(username)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
200 uid = atol(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
201 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
202 /* Next, see if on buddy list and know uid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
203 buddy = purple_find_buddy(session->account, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
204 if (buddy) {
25374
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
205 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
206 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
207 uid = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
208 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
209
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
210 if (!buddy || !uid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
diff changeset
213 username ? username : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
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: 24728
diff changeset
216 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
217 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
218
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
219 /* Already have uid, postprocess and send msg immediately. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
221 username ? username : "(NULL)", uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
222
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
224
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
225 rc = msim_msg_send(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
226
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
227 /* TODO: free
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
228 * msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
229 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
230
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
231 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
232 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
233
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
234 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
235 * Send a buddy message of a given type.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
236 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
237 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
238 * @param who Username to send message to.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
240 * @param type A MSIM_BM_* constant.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
241 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
242 * @return TRUE if success, FALSE if fail.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
243 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
245 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
246 gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
248 int type)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
249 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
250 gboolean rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
251 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
252 const gchar *from_username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
253
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
254 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
255 g_return_val_if_fail(who != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
256 g_return_val_if_fail(text != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
257
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
258 from_username = session->account->username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
259
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
260 g_return_val_if_fail(from_username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
261
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
262 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: 24728
diff changeset
263 type, from_username, who, text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
264
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
265 msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
266 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
267 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
268 /* 't' will be inserted here */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
269 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
270 "msg", MSIM_TYPE_STRING, g_strdup(text),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
271 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
272
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
273 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
274
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
275 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
276
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
277 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
278 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
279
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
280 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
281 * Lookup a username by userid, from buddy list.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
282 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
283 * @param wanted_uid
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
284 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
285 * @return Username of wanted_uid, if on blist, or NULL.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
286 * 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: 24728
diff changeset
287 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
288 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
289 static const gchar *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
290 msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
291 {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
292 GSList *buddies, *cur;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
293 const gchar *ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
294
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
295 buddies = purple_find_buddies(account, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
296
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
297 if (!buddies)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
298 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
299 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
300 return NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
301 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
302
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
303 ret = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
304
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
305 for (cur = buddies; cur != NULL; cur = g_slist_next(cur))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
306 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
307 PurpleBuddy *buddy;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
308 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
309 const gchar *name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
310
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
311 /* See finch/gnthistory.c */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
312 buddy = cur->data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
313
25374
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
314 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
315 name = purple_buddy_get_name(buddy);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
316
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
317 if (uid == wanted_uid)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
318 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
319 ret = name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
320 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
321 }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
322 }
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
323
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
324 g_slist_free(buddies);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
325 return ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
326 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
327
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
328 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
329 * 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: 24728
diff changeset
330 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
331 * @param cb The callback, an MSIM_USER_LOOKUP_CB.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
332 * @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: 24728
diff changeset
333 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
334 * @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: 24728
diff changeset
335 * Put the rid in your request, 'rid' field.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
336 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
337 * TODO: Make more generic and more specific:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
338 * 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: 24728
diff changeset
339 * 2) data - make it an MsimMessage?
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
340 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
341 guint
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
342 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
343 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
344 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
345 guint rid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
346
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
347 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
348
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
349 rid = session->next_rid++;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
350
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
351 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: 24728
diff changeset
352 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: 24728
diff changeset
353
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
354 return rid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
355 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
356
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
357 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
358 * Return the icon name for a buddy and account.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
359 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
360 * @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: 24728
diff changeset
361 * @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: 24728
diff changeset
362 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
363 * @return The base icon name string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
364 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
365 static const gchar *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
366 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
367 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
368 /* Use a MySpace icon submitted by hbons at
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
369 * http://developer.pidgin.im/wiki/MySpaceIM. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
370 return "myspace";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
371 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
372
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
373 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
374 * Obtain the status text for a buddy.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
375 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
376 * @param buddy The buddy to obtain status text for.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
377 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
378 * @return Status text, or NULL if error. Caller g_free()'s.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
379 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
380 static char *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
381 msim_status_text(PurpleBuddy *buddy)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
382 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
383 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
384 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
385 const gchar *display_name, *headline;
25374
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
386 PurpleAccount *account;
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
387 PurpleConnection *gc;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
388
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
389 g_return_val_if_fail(buddy != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
390
25005
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 24509 24770
diff changeset
391 user = msim_get_user_from_buddy(buddy, TRUE);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
392
25374
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
393 account = purple_buddy_get_account(buddy);
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
394 gc = purple_account_get_connection(account);
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
395 session = (MsimSession *)gc->proto_data;
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
396
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
397 g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
398
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
399 display_name = headline = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
400
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
401 /* Retrieve display name and/or headline, depending on user preference. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
402 if (purple_account_get_bool(session->account, "show_headline", TRUE)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
403 headline = user->headline;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
404 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
405
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
406 if (purple_account_get_bool(session->account, "show_display_name", FALSE)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
407 display_name = user->display_name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
408 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
409
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
410 /* Return appropriate combination of display name and/or headline, or neither. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
411
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
412 if (display_name && headline) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
413 return g_strconcat(display_name, " ", headline, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
414 } else if (display_name) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
415 return g_strdup(display_name);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
416 } else if (headline) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
417 return g_strdup(headline);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
418 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
419
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
420 return NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
421 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
422
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
423 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
424 * Obtain the tooltip text for a buddy.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
425 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
426 * @param buddy Buddy to obtain tooltip text on.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
427 * @param user_info Variable modified to have the tooltip text.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
428 * @param full TRUE if should obtain full tooltip text.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
429 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
430 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
431 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
432 gboolean full)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
433 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
434 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
435
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
436 g_return_if_fail(buddy != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
437 g_return_if_fail(user_info != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
438
25005
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 24509 24770
diff changeset
439 user = msim_get_user_from_buddy(buddy, TRUE);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
440
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
441 if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
442 MsimSession *session;
25374
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
443 PurpleAccount *account = purple_buddy_get_account(buddy);
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
444 PurpleConnection *gc = purple_account_get_connection(account);
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
445
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
446 session = (MsimSession *)gc->proto_data;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
447
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
448 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
449
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
450 /* TODO: if (full), do something different? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
451
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
452 /* TODO: request information? have to figure out how to do
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
453 * the asynchronous lookup like oscar does (tooltip shows
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
454 * 'retrieving...' if not yet available, then changes when it is).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
455 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
456 * Right now, only show what we have on hand.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
457 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
458
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
459 /* Show abbreviated user info. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
460 msim_append_user_info(session, user_info, user, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
461 }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
462 }
22160
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22159
diff changeset
463
19242
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 * Get possible user status types. Based on mockprpl.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
466 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
467 * @return GList of status types.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
468 */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
469 static GList *
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
470 msim_status_types(PurpleAccount *acct)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
471 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
472 GList *types;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
473 PurpleStatusType *status;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
474
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
475 purple_debug_info("myspace", "returning status types\n");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
476
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
477 types = NULL;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
478
22160
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22159
diff changeset
479 /* 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
480 #define _MSIM_ADD_NEW_STATUS(prim) status = \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
481 purple_status_type_new_with_attrs( \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
482 prim, /* PurpleStatusPrimitive */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
483 NULL, /* id - use default */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
484 NULL, /* name - use default */ \
24409
3a3d36791a47 I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents: 24349
diff changeset
485 TRUE, /* saveable */ \
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
486 TRUE, /* user_settable */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
487 FALSE, /* not independent */ \
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 /* Attributes - each status can have a message. */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
490 "message", \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
491 _("Message"), \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
492 purple_value_new(PURPLE_TYPE_STRING), \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
493 NULL); \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
494 \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
495 \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
496 types = g_list_append(types, status)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
497
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
498
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
499 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
500 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
501 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
502 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
503
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
504 /* 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
505 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
506 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
507 "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
508 NULL, /* name - use default */
24409
3a3d36791a47 I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents: 24349
diff changeset
509 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
510 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
511 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
512
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
513 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
514 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
515 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
516
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22226
diff changeset
517 types = g_list_append(types, status);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
518
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
519 return types;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
520 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
521
27237
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
522 /*
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
523 * TODO: This define is stolen from oscar.h.
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
524 * It's also in yahoo.h.
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
525 * It should be in libpurple/util.c
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
526 */
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
527 #define msim_put32(buf, data) ( \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
528 (*((buf)) = (unsigned char)((data)>>24)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
529 (*((buf)+1) = (unsigned char)((data)>>16)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
530 (*((buf)+2) = (unsigned char)((data)>>8)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
531 (*((buf)+3) = (unsigned char)(data)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
532 4)
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
533
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
534 /**
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
535 * 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
536 *
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
537 * @param nonce The base64 encoded nonce ('nc') field from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
538 * @param email User's email address (used as login name).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
539 * @param password User's cleartext password.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
540 * @param response_len Will be written with response length.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
541 *
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
542 * @return Binary login challenge response, ready to send to the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
543 * 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
544 */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
545 static gchar *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
546 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE],
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
547 const gchar *email, const gchar *password, guint *response_len)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
548 {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
549 PurpleCipherContext *key_context;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
550 PurpleCipher *sha1;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
551 PurpleCipherContext *rc4;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
552
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
553 guchar hash_pw[HASH_SIZE];
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
554 guchar key[HASH_SIZE];
24883
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24853
diff changeset
555 gchar *password_truncated, *password_utf16le, *password_utf8_lc;
24732
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
556 GString *data;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
557 guchar *data_out;
24732
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
558 size_t data_out_len;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
559 gsize conv_bytes_read, conv_bytes_written;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
560 GError *conv_error;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
561 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
562 int i;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
563 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
564
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
565 g_return_val_if_fail(nonce != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
566 g_return_val_if_fail(email != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
567 g_return_val_if_fail(password != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
568 g_return_val_if_fail(response_len != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
569
24883
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24853
diff changeset
570 /*
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24853
diff changeset
571 * 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: 24853
diff changeset
572 * 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: 24853
diff changeset
573 * 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: 24853
diff changeset
574 * truncate it.
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24853
diff changeset
575 */
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24853
diff changeset
576 password_truncated = g_strndup(password, 10);
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24853
diff changeset
577
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
578 /* Convert password to lowercase (required for passwords containing
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
579 * uppercase characters). MySpace passwords are lowercase,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
580 * see ticket #2066. */
24883
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24853
diff changeset
581 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: 24853
diff changeset
582 g_free(password_truncated);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
583
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
584 /* Convert ASCII password to UTF16 little endian */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
585 purple_debug_info("msim", "converting password to UTF-16LE\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
586 conv_error = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
587 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
588 &conv_bytes_read, &conv_bytes_written, &conv_error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
589 g_free(password_utf8_lc);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
590
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
591 if (conv_error != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
592 purple_debug_error("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
593 "g_convert password UTF8->UTF16LE failed: %s",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
594 conv_error->message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
595 g_error_free(conv_error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
596 return NULL;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
597 }
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
598
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
599 /* Compute password hash */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
600 purple_cipher_digest_region("sha1", (guchar *)password_utf16le,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
601 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
602 g_free(password_utf16le);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
603
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
604 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
605 purple_debug_info("msim", "pwhash = ");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
606 for (i = 0; i < sizeof(hash_pw); i++)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
607 purple_debug_info("msim", "%.2x ", hash_pw[i]);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
608 purple_debug_info("msim", "\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
609 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
610
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
611 /* key = sha1(sha1(pw) + nonce2) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
612 sha1 = purple_ciphers_find_cipher("sha1");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
613 key_context = purple_cipher_context_new(sha1, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
614 purple_cipher_context_append(key_context, hash_pw, HASH_SIZE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
615 purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
616 purple_cipher_context_digest(key_context, sizeof(key), key, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
617 purple_cipher_context_destroy(key_context);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
618
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
619 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
620 purple_debug_info("msim", "key = ");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
621 for (i = 0; i < sizeof(key); i++) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
622 purple_debug_info("msim", "%.2x ", key[i]);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
623 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
624 purple_debug_info("msim", "\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
625 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
626
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
627 rc4 = purple_cipher_context_new_by_name("rc4", NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
628
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
629 /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
630 * but only first 0x10 used for the RC4 key. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
631 purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
632 purple_cipher_context_set_key(rc4, key);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
633
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
634 /* rc4 encrypt:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
635 * nonce1+email+IP list */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
636
24732
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
637 data = g_string_new(NULL);
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
638 g_string_append_len(data, nonce, NONCE_SIZE);
27237
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
639
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
640 /* Include the null terminator */
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
641 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: 27236
diff changeset
642
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
643 while (data->len % 4 != 0)
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
644 g_string_append_c(data, 0xfb);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
645
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
646 #ifdef SEND_OUR_IP_ADDRESSES
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
647 /* 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: 27236
diff changeset
648 g_string_set_size(data, data->len + 4);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
649 msim_put32(data->str + data->len - 4, MSIM_LOGIN_IP_LIST_LEN);
24732
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
650 g_string_append_len(data, MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN);
27237
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
651 #else
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
652 g_string_set_size(data, data->len + 4);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
653 msim_put32(data->str + data->len - 4, 0);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27236
diff changeset
654 #endif /* !SEND_OUR_IP_ADDRESSES */
24732
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
655
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
656 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: 24731
diff changeset
657
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
658 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: 24731
diff changeset
659 data->len, data_out, &data_out_len);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
660 purple_cipher_context_destroy(rc4);
24732
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
661
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
662 if (data_out_len != data->len) {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
663 purple_debug_info("msim", "msim_compute_login_response: "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
664 "data length mismatch: %" G_GSIZE_FORMAT " != %"
24732
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
665 G_GSIZE_FORMAT "\n", data_out_len, data->len);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
666 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
667
24732
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
668 g_string_free(data, TRUE);
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24731
diff changeset
669
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
670 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
671 purple_debug_info("msim", "response=<%s>\n", data_out);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
672 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
673
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
674 *response_len = data_out_len;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
675
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
676 return (gchar *)data_out;
19242
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
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
679 /**
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
680 * Process a login challenge, sending a response.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
681 *
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
682 * @param session
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
683 * @param msg Login challenge message.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
684 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
685 * @return TRUE if successful, FALSE if not
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
686 */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
687 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
688 msim_login_challenge(MsimSession *session, MsimMessage *msg)
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 PurpleAccount *account;
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
691 gchar *response;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
692 guint response_len;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
693 gchar *nc;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
694 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
695 gboolean ret;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
696
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
697 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
698 g_return_val_if_fail(msg != NULL, FALSE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
699
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
700 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
701
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
702 account = session->account;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
703
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
704 g_return_val_if_fail(account != NULL, FALSE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
705
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
706 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
707
22475
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22467
diff changeset
708 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: 22467
diff changeset
709 " bytes, decoded\n", nc_len);
19242
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 if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) {
22475
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22467
diff changeset
712 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: 22467
diff changeset
713 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH);
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 20892
diff changeset
714 purple_connection_error_reason (session->gc,
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 20892
diff changeset
715 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20121
e4bcdd9622c2 purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents: 20057
diff changeset
716 _("Unexpected challenge length from server"));
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
717 return FALSE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
718 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
719
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
720 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
721
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
722 response_len = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
723 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
724
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
725 g_free(nc);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
726
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
727 ret = msim_send(session,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
728 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
729 /* This is actually user's email address. */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
730 "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
731 /* 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
732 "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
733 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
734 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
735 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
736 "reconn", MSIM_TYPE_INTEGER, 0,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
737 "status", MSIM_TYPE_INTEGER, 100,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
738 "id", MSIM_TYPE_INTEGER, 1,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
739 NULL);
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
740
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
741 g_free(response);
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
742
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
743 return ret;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
744 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
745
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
746 /**
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
747 * Process unrecognized information.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
748 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
749 * @param session
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
750 * @param msg An MsimMessage that was unrecognized, or NULL.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
751 * @param note Information on what was unrecognized, or NULL.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
752 */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
753 void
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
754 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
755 {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
756 /* TODO: Some more context, outwardly equivalent to a backtrace,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
757 * 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
758 * But not too much information so that a user
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
759 * posting this dump reveals confidential information.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
760 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
761
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
762 /* 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
763 * if they wish, to help add support for new messages (inspired
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
764 * by Alexandr Shutko, who maintains OSCAR protocol documentation).
22156
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
765 *
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
766 * Filed enhancement ticket for libpurple as #4688.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
767 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
768
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
769 purple_debug_info("msim", "Unrecognized data on account for %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
770 (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
771 session->account->username : "(NULL)");
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
772 if (note) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
773 purple_debug_info("msim", "(Note: %s)\n", note);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
774 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
775
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
776 if (msg) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
777 msim_msg_dump("Unrecognized message dump: %s\n", msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
778 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
779 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
780
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
781 /** Called when the session key arrives to check whether the user
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
782 * has a username, and set one if desired. */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
783 static gboolean
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
784 msim_is_username_set(MsimSession *session, MsimMessage *msg)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
785 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
786 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
787 g_return_val_if_fail(msg != NULL, FALSE);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
788 g_return_val_if_fail(session->gc != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
789
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
790 session->sesskey = msim_msg_get_integer(msg, "sesskey");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
791 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
792
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
793 /* 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: 24728
diff changeset
794
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
795 /* Comes with: proof,profileid,userid,uniquenick -- all same values
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
796 * 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: 24728
diff changeset
797 session->userid = msim_msg_get_integer(msg, "userid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
798
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
799 /* 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: 24728
diff changeset
800 purple_account_set_int(session->account, "uid", session->userid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
801
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
802 /* Not sure what profileid is used for. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
803 if (msim_msg_get_integer(msg, "profileid") != session->userid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
804 msim_unrecognized(session, msg,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
805 "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
806 }
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
807
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
808 /* 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: 24728
diff changeset
809 * which is weird, but happens because you login with your email
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
810 * address and not username. Will be freed in msim_session_destroy(). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
811 session->username = msim_msg_get_string(msg, "uniquenick");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
812
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
813 /* If user lacks a username, help them get one. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
814 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
815 purple_debug_info("msim_is_username_set", "no username is set\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
816 purple_request_yes_no(session->gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
817 _("MySpaceIM - No Username Set"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
818 _("You appear to have no MySpace username."),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
819 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
820 0,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
821 session->account,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
822 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
823 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
824 session->gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
825 G_CALLBACK(msim_set_username_cb),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
826 G_CALLBACK(msim_do_not_set_username_cb));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
827 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: 24728
diff changeset
828 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
829 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
830 return TRUE;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
831 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
832
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
833 #ifdef MSIM_USE_KEEPALIVE
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
834 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
835 * Check if the connection is still alive, based on last communication.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
836 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
837 static gboolean
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
838 msim_check_alive(gpointer data)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
839 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
840 MsimSession *session;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
841 time_t delta;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
842
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
843 session = (MsimSession *)data;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
844
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
845 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
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 delta = time(NULL) - session->last_comm;
24630
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24409
diff changeset
848
22156
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
849 /* 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
850 if (delta >= MSIM_KEEPALIVE_INTERVAL) {
24630
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24409
diff changeset
851 purple_debug_info("msim",
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24409
diff changeset
852 "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: 24409
diff changeset
853 delta, MSIM_KEEPALIVE_INTERVAL);
22156
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
854 purple_connection_error_reason(session->gc,
24630
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24409
diff changeset
855 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24409
diff changeset
856 _("Lost connection with server"));
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
857
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
858 return FALSE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
859 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
860
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
861 return TRUE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
862 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
863 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
864
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
865 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
866 * Handle mail reply checks.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
867 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
868 static void
24764
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24763
diff changeset
869 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
870 {
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
871 MsimMessage *body;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
872 guint old_inbox_status;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
873 guint i, n;
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
874 /* Information for each new inbox message type. */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
875 static struct
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
876 {
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
877 const gchar *key;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
878 guint bit;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
879 const gchar *url;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
880 const gchar *text;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
881 } message_types[] = {
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
882 { "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
883 { "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
884 { "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
885 { "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
886 { "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
887 };
25891
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25861
diff changeset
888 const gchar *froms[G_N_ELEMENTS(message_types) + 1] = { "" },
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25861
diff changeset
889 *tos[G_N_ELEMENTS(message_types) + 1] = { "" },
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25861
diff changeset
890 *urls[G_N_ELEMENTS(message_types) + 1] = { "" },
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25861
diff changeset
891 *subjects[G_N_ELEMENTS(message_types) + 1] = { "" };
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25861
diff changeset
892
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25861
diff changeset
893 g_return_if_fail(reply != NULL);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
894
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
895 /* Can't write _()'d strings in array initializers. Workaround. */
25891
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25861
diff changeset
896 /* 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: 25861
diff changeset
897 used */
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
898 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
899 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
900 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
901 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
902 message_types[4].text = _("New picture comments");
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
903
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
904 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
905
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
906 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
907 return;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
908
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
909 old_inbox_status = session->inbox_status;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
910
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
911 n = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
912
25891
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25861
diff changeset
913 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
914 const gchar *key;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
915 guint bit;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
916
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
917 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
918 bit = message_types[i].bit;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
919
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
920 if (msim_msg_get(body, key)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
921 /* Notify only on when _changes_ from no mail -> has mail
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
922 * (edge triggered) */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
923 if (!(session->inbox_status & bit)) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
924 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
925 key ? key : "(NULL)", n);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
926
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
927 subjects[n] = message_types[i].text;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
928 froms[n] = _("MySpace");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
929 tos[n] = session->username;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
930 /* TODO: append token, web challenge, so automatically logs in.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
931 * 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
932 */
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
933 urls[n] = message_types[i].url;
19242
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 ++n;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
936 } else {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
937 purple_debug_info("msim",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
938 "msim_check_inbox_cb: already notified of %s\n",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
939 key ? key : "(NULL)");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
940 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
941
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
942 session->inbox_status |= bit;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
943 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
944 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
945
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
946 if (n) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
947 purple_debug_info("msim",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
948 "msim_check_inbox_cb: notifying of %d\n", n);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
949
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
950 /* 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
951 purple_notify_emails(session->gc, /* handle */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
952 n, /* count */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
953 TRUE, /* detailed */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
954 subjects, froms, tos, urls,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
955 NULL, /* PurpleNotifyCloseCallback cb */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
956 NULL); /* gpointer user_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 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
959
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
960 msim_msg_free(body);
19242
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
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
963 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
964 * Send request to check if there is new mail.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
965 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
966 static gboolean
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
967 msim_check_inbox(gpointer data)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
968 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
969 MsimSession *session;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
970
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
971 session = (MsimSession *)data;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
972
21758
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
973 if (!MSIM_SESSION_VALID(session)) {
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
974 purple_debug_info("msim", "msim_check_inbox: session invalid, stopping the mail check.\n");
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
975 return FALSE;
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
976 }
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
977
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
978 purple_debug_info("msim", "msim_check_inbox: checking mail\n");
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
979 g_return_val_if_fail(msim_send(session,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
980 "persist", MSIM_TYPE_INTEGER, 1,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
981 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
982 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
983 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
984 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
985 "uid", MSIM_TYPE_INTEGER, session->userid,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
986 "rid", MSIM_TYPE_INTEGER,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
987 msim_new_reply_callback(session, msim_check_inbox_cb, NULL),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
988 "body", MSIM_TYPE_STRING, g_strdup(""),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
989 NULL), TRUE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
990
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
991 /* Always return true, so that we keep checking for mail. */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
992 return TRUE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
993 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
994
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
995 /**
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
996 * Add contact from server to buddy list, after looking up username.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
997 * 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
998 *
34a1957de14b Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19255
diff changeset
999 * @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
1000 */
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1001 static void
24764
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24763
diff changeset
1002 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
1003 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1004 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
1005 PurpleGroup *group;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1006 PurpleBuddy *buddy;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1007 MsimUser *user;
24761
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1008 gchar *username, *group_name, *display_name;
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
1009 guint uid, visibility;
19255
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 contact_info = (MsimMessage *)data;
22475
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22467
diff changeset
1012 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
1013 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
1014
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1015 if (!user_lookup_info) {
22159
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22158
diff changeset
1016 username = g_strdup(msim_uid2username_from_blist(session->account, uid));
24761
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1017 display_name = NULL;
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1018 g_return_if_fail(username != NULL);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1019 } else {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1020 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
1021 username = msim_msg_get_string(user_lookup_info_body, "UserName");
24761
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1022 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
1023 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
1024 g_return_if_fail(username != NULL);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1025 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1026
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1027 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
1028 "*** 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
1029
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1030 /* 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
1031 * the documentation claims). */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1032 group_name = msim_msg_get_string(contact_info, "GroupName");
22985
882af25a8edf Fix handling of empty groups in MySpace. Fixes #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22982
diff changeset
1033 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
1034 g_free(group_name);
22982
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22590
diff changeset
1035 group_name = g_strdup(_("IM Friends"));
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22590
diff changeset
1036 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
1037 }
22982
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22590
diff changeset
1038 group = purple_find_group(group_name);
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22590
diff changeset
1039 if (!group) {
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22590
diff changeset
1040 group = purple_group_new(group_name);
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22590
diff changeset
1041 /* Add group to beginning. See #2752. */
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22590
diff changeset
1042 purple_blist_add_group(group, NULL);
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22590
diff changeset
1043 }
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22590
diff changeset
1044 g_free(group_name);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1045
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
1046 visibility = msim_msg_get_integer(contact_info, "Visibility");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
1047 if (visibility == 2) {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
1048 /* 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: 24748
diff changeset
1049 purple_privacy_deny_add(session->account, username, TRUE);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
1050 msim_msg_free(contact_info);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
1051 g_free(username);
24761
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1052 g_free(display_name);
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
1053 return;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
1054 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
1055
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1056 /* 2. Get or create buddy */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1057 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
1058 if (!buddy) {
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1059 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
1060 "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
1061 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
1062 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1063
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1064 /* 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
1065 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
1066
24761
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1067 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: 24750
diff changeset
1068 /*
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1069 * 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: 24750
diff changeset
1070 * 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: 24750
diff changeset
1071 * 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: 24750
diff changeset
1072 */
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1073 if (display_name != NULL) {
25378
47540809ae91 explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
parents: 24768 25377
diff changeset
1074 purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name);
24761
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1075 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: 24750
diff changeset
1076 } else {
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1077 serv_got_alias(session->gc, username,
25378
47540809ae91 explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
parents: 24768 25377
diff changeset
1078 purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName"));
24761
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1079 }
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1080 }
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1081 g_free(display_name);
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24750
diff changeset
1082
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1083 /* 3. Update buddy information */
25005
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 24509 24770
diff changeset
1084 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
1085
24632
128a77f3b3c4 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents: 24631
diff changeset
1086 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: 24631
diff changeset
1087 /* Keep track of the user ID across sessions */
25374
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
1088 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
1089
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1090 /* 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
1091 * AvatarURL, Headline, ContactID. */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1092 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
1093
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1094 /* 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
1095 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
1096
9f95357c21b9 In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22225
diff changeset
1097 g_free(username);
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
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1100 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1101 * 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: 24728
diff changeset
1102 * 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
1103 *
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1104 * @return TRUE if added.
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1105 */
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1106 static gboolean
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1107 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
1108 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1109 guint uid;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1110 const gchar *username;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1111
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1112 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
1113 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
1114
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1115 /* Lookup the username, since NickName and IMName is unreliable */
22159
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22158
diff changeset
1116 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
1117 if (!username) {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1118 gchar *uid_str;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1119
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1120 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
1121 purple_debug_info("msim_add_contact_from_server",
22475
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22467
diff changeset
1122 "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
1123 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
1124 g_free(uid_str);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1125 } 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
1126 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
1127 }
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1128
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1129 /* 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
1130 * their username. */
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1131 return TRUE;
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1132 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1133
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1134 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1135 * Called when contact list is received from server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1136 */
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1137 static void
24764
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24763
diff changeset
1138 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
1139 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1140 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
1141 gchar *msg;
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1142 guint buddy_count;
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1143
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1144 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
1145
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1146 buddy_count = 0;
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1147
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1148 for (body_node = body;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1149 body_node != NULL;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1150 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
1151 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1152 MsimMessageElement *elem;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1153
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1154 elem = (MsimMessageElement *)body_node->data;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1155
19428
1fa10842eb83 In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19427
diff changeset
1156 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
1157 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1158 /* 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
1159 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
1160 ++buddy_count;
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1161 }
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1162 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1163 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1164
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1165 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
1166 case MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS:
23334
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23321
diff changeset
1167 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: 23321
diff changeset
1168 "%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: 23321
diff changeset
1169 buddy_count),
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23321
diff changeset
1170 buddy_count);
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1171 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
1172 g_free(msg);
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1173 break;
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1174
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1175 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
1176 /* TODO */
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1177 break;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1178
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1179 case MSIM_CONTACT_LIST_INITIAL_FRIENDS:
25057
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24895
diff changeset
1180 /* 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: 24895
diff changeset
1181 * 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: 24895
diff changeset
1182 * 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: 24895
diff changeset
1183 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: 24895
diff changeset
1184 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
1185 break;
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1186 }
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1187
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1188 msim_msg_free(body);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1189 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1190
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1191 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1192 * Get contact list, calling msim_got_contact_list() with
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1193 * what_to_do_after as user_data gpointer.
24735
9f6ae339e849 Minor comment change
Mark Doliner <mark@kingant.net>
parents: 24734
diff changeset
1194 *
9f6ae339e849 Minor comment change
Mark Doliner <mark@kingant.net>
parents: 24734
diff changeset
1195 * @param what_to_do_after should be one of the MSIM_CONTACT_LIST_* #defines.
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1196 */
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1197 static gboolean
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1198 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
1199 {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1200 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
1201 "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
1202 "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
1203 "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
1204 "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
1205 "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
1206 "uid", MSIM_TYPE_INTEGER, session->userid,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1207 "rid", MSIM_TYPE_INTEGER,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1208 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
1209 "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
1210 NULL);
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1211 }
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1212
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1213 /** 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: 24728
diff changeset
1214 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
1215 {
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
1216 MsimMessage *body;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1217
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1218 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1219
24734
512c7c31eb21 Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents: 24732
diff changeset
1220 /* 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: 24732
diff changeset
1221 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: 24732
diff changeset
1222
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1223 body = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1224 "UserID", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1225 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1226
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1227 /* Request IM info about ourself. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1228 msim_send(session,
24744
e5f8d9ba84db I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents: 24743
diff changeset
1229 "persist", MSIM_TYPE_INTEGER, 1,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1230 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24745
d7fad2c0cf7c Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents: 24744
diff changeset
1231 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1232 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1233 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1234 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
24745
d7fad2c0cf7c Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents: 24744
diff changeset
1235 "UserID", MSIM_TYPE_INTEGER, session->userid,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1236 "body", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1237 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1238
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1239 /* Request MySpace info about ourself. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1240 msim_send(session,
24744
e5f8d9ba84db I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents: 24743
diff changeset
1241 "persist", MSIM_TYPE_INTEGER, 1,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1242 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24745
d7fad2c0cf7c Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents: 24744
diff changeset
1243 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1244 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1245 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1246 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1247 "body", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1248 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1249
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1250 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1251 /* TODO: set blocklist */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1252
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1253 /* Notify servers of our current status. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1254 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: 24728
diff changeset
1255 msim_set_status(session->account,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1256 purple_account_get_active_status(session->account));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1257
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1258 /* TODO: setinfo */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1259 /*
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1260 body = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1261 "TotalFriends", MSIM_TYPE_INTEGER, 666,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1262 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1263 msim_send(session,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1264 "setinfo", MSIM_TYPE_BOOLEAN, TRUE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1265 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1266 "info", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1267 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1268 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1269
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1270 /* Disable due to problems with timeouts. TODO: fix. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1271 #ifdef MSIM_USE_KEEPALIVE
25861
7f552614ec8a applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents: 25168
diff changeset
1272 purple_timeout_add_seconds(MSIM_KEEPALIVE_INTERVAL_CHECK,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1273 (GSourceFunc)msim_check_alive, session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1274 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1275
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1276 /* Check mail if they want to. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1277 if (purple_account_get_check_mail(session->account)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1278 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1279 (GSourceFunc)msim_check_inbox, session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1280 msim_check_inbox(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1281 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1282
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1283 msim_get_contact_list(session, MSIM_CONTACT_LIST_INITIAL_FRIENDS);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1284
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1285 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1286 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1287
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1288 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1289 * Record the client version in the buddy list, from an incoming message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1290 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1291 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1292 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1293 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1294 gchar *username, *cv;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1295 gboolean ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1296 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1297
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1298 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1299 cv = msim_msg_get_string(msg, "cv");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1300
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1301 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1302 if (!cv) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1303 /* No client version to record, don't worry about it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1304 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1305 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1306 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1307
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1308 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1309
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1310 if (user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1311 user->client_cv = atol(cv);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1312 ret = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1313 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1314 ret = FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1315 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1316
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1317 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1318 g_free(cv);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1319
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1320 return ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1321 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1322
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1323 #ifdef MSIM_SEND_CLIENT_VERSION
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1324 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1325 * Send our client version to another unofficial client that understands it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1326 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1327 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1328 msim_send_unofficial_client(MsimSession *session, gchar *username)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1329 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1330 gchar *our_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1331 gboolean ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1332
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1333 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1334 PURPLE_MAJOR_VERSION,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1335 PURPLE_MINOR_VERSION,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1336 PURPLE_MICRO_VERSION,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1337 MSIM_PRPL_VERSION_STRING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1338
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1339 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1340
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1341 return ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1342 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1343 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1344
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1345 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1346 * Process incoming status messages.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1347 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1348 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1349 * @param msg Status update message. Caller frees.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1350 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1351 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1352 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1353 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1354 msim_incoming_status(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1355 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1356 PurpleBuddyList *blist;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1357 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1358 GList *list;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1359 gchar *status_headline, *status_headline_escaped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1360 gint status_code, purple_status_code;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1361 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1362 gchar *unrecognized_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1363
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1364 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1365 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1366
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1367 /* Helpfully looked up by msim_incoming_resolve() for us. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1368 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1369 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1370
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1371 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1372 gchar *ss;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1373
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1374 ss = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1375 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1376 "msim_status: updating status for <%s> to <%s>\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1377 username, ss ? ss : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1378 g_free(ss);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1379 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1380
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1381 /* Example fields:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1382 * |s|0|ss|Offline
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1383 * |s|1|ss|:-)|ls||ip|0|p|0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1384 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1385 list = msim_msg_get_list(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1386
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1387 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: 24728
diff changeset
1388 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: 24728
diff changeset
1389 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: 24728
diff changeset
1390
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1391 blist = purple_get_blist();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1392
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1393 /* Add buddy if not found.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1394 * TODO: Could this be responsible for #3444? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1395 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1396 if (!user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1397 PurpleBuddy *buddy;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1398
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1399 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1400 "msim_status: making new buddy for %s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1401 buddy = purple_buddy_new(session->account, username, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1402 purple_blist_add_buddy(buddy, NULL, NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1403
25005
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 24509 24770
diff changeset
1404 user = msim_get_user_from_buddy(buddy, TRUE);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1405 user->id = msim_msg_get_integer(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1406
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1407 /* Keep track of the user ID across sessions */
25374
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24731 25373
diff changeset
1408 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1409
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1410 msim_store_user_info(session, msg, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1411 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1412 purple_debug_info("msim", "msim_status: found buddy %s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1413 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1414
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1415 if (status_headline && strcmp(status_headline, "") != 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1416 /* The status headline is plaintext, but libpurple treats it as HTML,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1417 * so escape any HTML characters to their entity equivalents. */
24770
22fd7467f0cc Fix a few small memleaks
Mark Doliner <mark@kingant.net>
parents: 24768
diff changeset
1418 status_headline_escaped = g_markup_escape_text(status_headline, -1);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1419 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1420 status_headline_escaped = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1421 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1422
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1423 g_free(status_headline);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1424
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1425 /* don't copy; let the MsimUser own the headline, memory-wise */
24770
22fd7467f0cc Fix a few small memleaks
Mark Doliner <mark@kingant.net>
parents: 24768
diff changeset
1426 g_free(user->headline);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1427 user->headline = status_headline_escaped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1428
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1429 /* Set user status */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1430 switch (status_code) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1431 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1432 purple_status_code = PURPLE_STATUS_OFFLINE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1433 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1434
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1435 case MSIM_STATUS_CODE_ONLINE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1436 purple_status_code = PURPLE_STATUS_AVAILABLE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1437 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1438
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1439 case MSIM_STATUS_CODE_AWAY:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1440 purple_status_code = PURPLE_STATUS_AWAY;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1441 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1442
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1443 case MSIM_STATUS_CODE_IDLE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1444 /* Treat idle as an available status. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1445 purple_status_code = PURPLE_STATUS_AVAILABLE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1446 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1447
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1448 default:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1449 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: 24728
diff changeset
1450 username, status_code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1451 purple_status_code = PURPLE_STATUS_AVAILABLE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1452
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1453 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: 24728
diff changeset
1454 status_code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1455 msim_unrecognized(session, NULL, unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1456 g_free(unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1457 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1458
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1459 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: 24728
diff changeset
1460
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1461 if (status_code == MSIM_STATUS_CODE_IDLE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1462 purple_debug_info("msim", "msim_status: got idle: %s\n", username);
24763
a8643ca8d2e0 Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents: 24761
diff changeset
1463 purple_prpl_got_user_idle(session->account, username, TRUE, 0);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1464 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1465 /* All other statuses indicate going back to non-idle. */
24763
a8643ca8d2e0 Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents: 24761
diff changeset
1466 purple_prpl_got_user_idle(session->account, username, FALSE, 0);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1467 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1468
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1469 #ifdef MSIM_SEND_CLIENT_VERSION
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1470 if (status_code == MSIM_STATUS_CODE_ONLINE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1471 /* Secretly whisper to unofficial clients our own version as they come online */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1472 msim_send_unofficial_client(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1473 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1474 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1475
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1476 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1477 /* Get information when they come online.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1478 * TODO: periodically refresh?
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1479 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1480 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: 24728
diff changeset
1481 msim_lookup_user(session, username, NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1482 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1483
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1484 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1485 msim_msg_list_free(list);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1486
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1487 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1488 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1489
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1490 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1491 * Handle an incoming instant message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1492 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1493 * @param session The session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1494 * @param msg Message from the server, containing 'f' (userid from) and 'msg'.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1495 * Should also contain username in _username from preprocessing.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1496 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1497 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1498 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1499 static gboolean
27109
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1500 msim_incoming_im(MsimSession *session, MsimMessage *msg, const gchar *username)
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1501 {
27109
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1502 gchar *msg_msim_markup, *msg_purple_markup;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1503 gchar *userid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1504 time_t time_received;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1505 PurpleConversation *conv;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1506
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1507 /* 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: 24728
diff changeset
1508 * purple_find_conversation_with_account(). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1509 userid = msim_msg_get_string(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1510
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1511 purple_debug_info("msim_incoming_im", "UserID is %s", userid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1512
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1513 if (msim_is_userid(username)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1514 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: 24728
diff changeset
1515 username, purple_account_get_username(session->account));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1516 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1517 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1518
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1519 /* See if a conversation with their UID already exists...*/
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1520 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: 24728
diff changeset
1521 if (conv) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1522 /* Since the conversation exists... We need to normalize it */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1523 purple_conversation_set_name(conv, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1524 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1525
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1526 msg_msim_markup = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1527 g_return_val_if_fail(msg_msim_markup != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1528
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1529 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1530 g_free(msg_msim_markup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1531
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1532 time_received = msim_msg_get_integer(msg, "date");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1533 if (!time_received) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1534 purple_debug_info("msim_incoming_im", "date in message not set.\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1535 time_received = time(NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1536 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1537
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1538 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: 24728
diff changeset
1539
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1540 g_free(msg_purple_markup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1541
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1542 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1543 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1544
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1545 /**
27109
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1546 * Handle an incoming action message or an IM.
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1547 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1548 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1549 * @param msg
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1550 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1551 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1552 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1553 static gboolean
27109
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1554 msim_incoming_action_or_im(MsimSession *session, MsimMessage *msg)
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1555 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1556 gchar *msg_text, *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1557 gboolean rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1558
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1559 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1560 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1561
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1562 msg_text = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1563 g_return_val_if_fail(msg_text != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1564
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1565 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1566 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1567
27109
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1568 purple_debug_info("msim",
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1569 "msim_incoming_action_or_im: action <%s> from <%s>\n",
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1570 msg_text, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1571
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1572 if (g_str_equal(msg_text, "%typing%")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1573 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1574 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1575 } else if (g_str_equal(msg_text, "%stoptyping%")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1576 serv_got_typing_stopped(session->gc, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1577 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1578 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1579 rc = msim_incoming_zap(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1580 } else if (strstr(msg_text, "!!!GroupCount=")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1581 /* TODO: support group chats. I think the number in msg_text has
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1582 * something to do with the 'gid' field. */
27109
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1583 purple_debug_info("msim",
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1584 "msim_incoming_action_or_im: "
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1585 "TODO: implement #4691, group chats: %s\n", msg_text);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1586
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1587 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1588 } else if (strstr(msg_text, "!!!Offline=")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1589 /* TODO: support group chats. This one might mean a user
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1590 * went offline or exited the chat. */
27109
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1591 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: 27100
diff changeset
1592 "TODO: implement #4691, group chats: %s\n", msg_text);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1593
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1594 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1595 } else if (msim_msg_get_integer(msg, "aid") != 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1596 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: 24728
diff changeset
1597 msim_msg_get_integer(msg, "aid"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1598 msim_msg_get_integer(msg, "f"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1599 msg_text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1600
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1601 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1602 } else {
27109
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1603 rc = msim_incoming_im(session, msg, username);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1604 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1605
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1606 g_free(msg_text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1607 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1608
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1609 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1610 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1611
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1612 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1613 * Process an incoming media (message background?) message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1614 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1615 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1616 msim_incoming_media(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1617 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1618 gchar *username, *text;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1619
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1620 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1621 text = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1622
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1623 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1624 g_return_val_if_fail(text != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1625
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1626 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: 24728
diff changeset
1627
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1628 /* Media messages are sent when the user opens a window to someone.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1629 * Tell libpurple they started typing and stopped typing, to inform the Psychic
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1630 * Mode plugin so it too can open a window to the user. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1631 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1632 serv_got_typing_stopped(session->gc, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1633
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1634 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1635
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1636 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1637 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1638
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1639 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1640 * Process an incoming "unofficial client" message. The plugin for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1641 * Miranda IM sends this message with the plugin information.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1642 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1643 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1644 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1645 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1646 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1647 gchar *username, *client_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1648
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1649 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1650 client_info = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1651
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1652 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1653 g_return_val_if_fail(client_info != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1654
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1655 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: 24728
diff changeset
1656 username, client_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1657
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1658 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1659
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1660 g_return_val_if_fail(user != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1661
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1662 if (user->client_info) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1663 g_free(user->client_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1664 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1665 user->client_info = client_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1666
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1667 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1668 /* Do not free client_info - the MsimUser now owns it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1669
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1670 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1671 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1672
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1673 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1674 * Handle an incoming buddy message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1675 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1676 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1677 msim_incoming_bm(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1678 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1679 guint bm;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1680
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1681 bm = msim_msg_get_integer(msg, "bm");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1682
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1683 msim_incoming_bm_record_cv(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1684
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1685 switch (bm) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1686 case MSIM_BM_STATUS:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1687 return msim_incoming_status(session, msg);
27236
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27219
diff changeset
1688 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: 27219
diff changeset
1689 case MSIM_BM_ACTION_OR_IM_INSTANT:
27109
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27100
diff changeset
1690 return msim_incoming_action_or_im(session, msg);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1691 case MSIM_BM_MEDIA:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1692 return msim_incoming_media(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1693 case MSIM_BM_UNOFFICIAL_CLIENT:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1694 return msim_incoming_unofficial_client(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1695 default:
28233
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27463
diff changeset
1696 /*
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27463
diff changeset
1697 * 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: 27463
diff changeset
1698 * 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: 27463
diff changeset
1699 * 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: 27463
diff changeset
1700 * 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: 27463
diff changeset
1701 * other message types.
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27463
diff changeset
1702 */
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27463
diff changeset
1703 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: 27463
diff changeset
1704 "message, bm=%u\n", bm);
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27463
diff changeset
1705 return TRUE;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1706 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1707 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1708
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1709 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1710 * Process the initial server information from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1711 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1712 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1713 msim_process_server_info(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1714 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1715 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1716
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1717 body = msim_msg_get_dictionary(msg, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1718 g_return_val_if_fail(body != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1719
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1720 /* Example body:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1721 AdUnitRefreshInterval=10.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1722 AlertPollInterval=360.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1723 AllowChatRoomEmoticonSharing=False.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1724 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1725 CurClientVersion=673.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1726 EnableIMBrowse=True.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1727 EnableIMStuffAvatars=False.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1728 EnableIMStuffZaps=False.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1729 MaxAddAllFriends=100.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1730 MaxContacts=1000.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1731 MinClientVersion=594.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1732 MySpaceIM_ENGLISH=78744676.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1733 MySpaceNowTimer=720.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1734 PersistenceDataTimeout=900.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1735 UseWebChallenge=1.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1736 WebTicketGoHome=False
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1737
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1738 Anything useful? TODO: use what is useful, and use it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1739 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1740 purple_debug_info("msim_process_server_info",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1741 "maximum contacts: %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1742 msim_msg_get_integer(body, "MaxContacts"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1743
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1744 session->server_info = body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1745 /* session->server_info freed in msim_session_destroy */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1746
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1747 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1748 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1749
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1750 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1751 * Process a web challenge, used to login to the web site.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1752 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1753 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1754 msim_web_challenge(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1755 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1756 /* TODO: web challenge, store token. #2659. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1757 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1758 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1759
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1760 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1761 * Process a persistance message reply from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1762 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1763 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1764 * @param msg Message reply from server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1765 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1766 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1767 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1768 * msim_lookup_user sets callback for here
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1769 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1770 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1771 msim_process_reply(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1772 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1773 MSIM_USER_LOOKUP_CB cb;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1774 gpointer data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1775 guint rid, cmd, dsn, lid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1776
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1777 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1778 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1779
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1780 msim_store_user_info(session, msg, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1781
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1782 rid = msim_msg_get_integer(msg, "rid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1783 cmd = msim_msg_get_integer(msg, "cmd");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1784 dsn = msim_msg_get_integer(msg, "dsn");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1785 lid = msim_msg_get_integer(msg, "lid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1786
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1787 /* Unsolicited messages */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1788 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1789 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1790 return msim_process_server_info(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1791 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1792 return msim_web_challenge(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1793 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1794 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1795
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1796 /* If a callback is registered for this userid lookup, call it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1797 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: 24728
diff changeset
1798 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: 24728
diff changeset
1799
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1800 if (cb) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1801 purple_debug_info("msim", "msim_process_reply: calling callback now\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1802 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */
24764
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24763
diff changeset
1803 cb(session, msg, data);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1804 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1805 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: 24728
diff changeset
1806 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1807 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1808 "msim_process_reply: no callback for rid %d\n", rid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1809 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1810
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1811 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1812 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1813
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1814 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1815 * Handle an error from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1816 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1817 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1818 * @param msg The message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1819 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1820 * @return TRUE if successfully reported error.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1821 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1822 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1823 msim_error(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1824 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1825 gchar *errmsg, *full_errmsg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1826 guint err;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1827
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1828 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1829 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1830
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1831 err = msim_msg_get_integer(msg, "err");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1832 errmsg = msim_msg_get_string(msg, "errmsg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1833
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1834 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1835 errmsg ? errmsg : "no 'errmsg' given");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1836
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1837 g_free(errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1838
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1839 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1840 session->sesskey, full_errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1841
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1842 /* Destroy session if fatal. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1843 if (msim_msg_get(msg, "fatal")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1844 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1845 purple_debug_info("msim", "fatal error, closing\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1846
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1847 switch (err) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1848 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1849 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1850 if (!purple_account_get_remember_password(session->account))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1851 purple_account_set_password(session->account, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1852 #ifdef MSIM_MAX_PASSWORD_LENGTH
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1853 if (session->account->password && (strlen(session->account->password) > MSIM_MAX_PASSWORD_LENGTH)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1854 gchar *suggestion;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1855
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1856 suggestion = g_strdup_printf(_("%s Your password is "
27209
c4f0e47c7bed Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents: 27109
diff changeset
1857 "%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: 27109
diff changeset
1858 "maximum length of %d. Please shorten your "
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1859 "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."),
27209
c4f0e47c7bed Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents: 27109
diff changeset
1860 full_errmsg,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1861 strlen(session->account->password),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1862 MSIM_MAX_PASSWORD_LENGTH);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1863
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1864 /* Replace full_errmsg. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1865 g_free(full_errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1866 full_errmsg = suggestion;
27210
0a8129263401 Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents: 27209
diff changeset
1867 } else {
0a8129263401 Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents: 27209
diff changeset
1868 g_free(full_errmsg);
0a8129263401 Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents: 27209
diff changeset
1869 full_errmsg = g_strdup(_("Incorrect username or password"));
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1870 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1871 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1872 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1873 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1874 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1875 if (!purple_account_get_remember_password(session->account))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1876 purple_account_set_password(session->account, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1877 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1878 }
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
1879 purple_connection_error_reason(session->gc, reason, full_errmsg);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1880 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1881 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1882 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1883
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1884 g_free(full_errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1885
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1886 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1887 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1888
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1889 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1890 * Process a message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1891 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1892 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1893 * @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: 24728
diff changeset
1894 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1895 * @return TRUE if successful. FALSE if processing failed.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1896 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1897 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1898 msim_process(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1899 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1900 g_return_val_if_fail(session != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1901 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1902
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1903 if (msim_msg_get_integer(msg, "lc") == 1) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1904 return msim_login_challenge(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1905 } else if (msim_msg_get_integer(msg, "lc") == 2) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1906 /* return msim_we_are_logged_on(session, msg); */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1907 if (msim_is_username_set(session, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1908 return msim_we_are_logged_on(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1909 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1910 /* 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: 24728
diff changeset
1911 /* 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: 24728
diff changeset
1912 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1913 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1914 } else if (msim_msg_get(msg, "bm")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1915 return msim_incoming_bm(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1916 } else if (msim_msg_get(msg, "rid")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1917 return msim_process_reply(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1918 } else if (msim_msg_get(msg, "error")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1919 return msim_error(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1920 } else if (msim_msg_get(msg, "ka")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1921 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1922 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1923 msim_unrecognized(session, msg, "in msim_process");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1924 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1925 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1926 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1927
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1928 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1929 * 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: 24728
diff changeset
1930 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1931 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1932 * @param userinfo Response messsage to resolving request.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1933 * @param data MsimMessage *, the message to attach information to.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1934 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1935 static void
24764
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24763
diff changeset
1936 msim_incoming_resolved(MsimSession *session, const MsimMessage *userinfo,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1937 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1938 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1939 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1940 MsimMessage *msg, *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1941
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1942 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1943 g_return_if_fail(userinfo != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1944
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1947
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1948 username = msim_msg_get_string(body, "UserName");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1949 g_return_if_fail(username != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1950 /* Note: username will be owned by 'msg' below. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1951
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1952 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1953 g_return_if_fail(msg != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1954
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1955 /* TODO: more elegant solution than below. attach whole message? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
1957 * program (did not come directly from the wire). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
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: 24728
diff changeset
1959
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1960 /* TODO: attach more useful information, like ImageURL */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1961
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1962 msim_process(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1963
24853
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24770
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);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1966 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1967
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1968 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1969 * Preprocess incoming messages, resolving as needed, calling
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1970 * msim_process() when ready to process.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1971 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1972 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1973 * @param msg MsimMessage *, freed by caller.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1974 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1975 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1976 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1977 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1978 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1979 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1980
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1981 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1982 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1983 const gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1984
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1985 /* 'f' = userid message is from, in buddy messages */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1986 uid = msim_msg_get_integer(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1987
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1988 username = msim_uid2username_from_blist(session->account, uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1989
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1990 if (username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1991 /* Know username already, use it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1992 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1993 username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1994 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1995 return msim_process(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1996
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1997 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1998 gchar *from;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
1999
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2000 /* Send lookup request. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2001 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2002 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2003 from = msim_msg_get_string(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2004 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2005 g_free(from);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2006
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2007 /* indeterminate */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2008 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2009 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2010 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2011 /* Nothing to resolve - send directly to processing. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2012 return msim_process(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2013 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2014 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2015
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2016 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2017 * Callback when input available.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2018 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2019 * @param gc_uncasted A PurpleConnection pointer.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2020 * @param source File descriptor.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2021 * @param cond PURPLE_INPUT_READ
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2022 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2023 * Reads the input, and calls msim_preprocess_incoming() to handle it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2024 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2025 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2026 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2027 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2028 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2029 PurpleAccount *account;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2030 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2031 gchar *end;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2032 int n;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2033
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2034 g_return_if_fail(gc_uncasted != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2035 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2036
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2037 gc = (PurpleConnection *)(gc_uncasted);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2038 account = purple_connection_get_account(gc);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2039 session = gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2040
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2041 /* libpurple/eventloop.h only defines these two */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2042 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2043 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2044 purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2045 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2046 _("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
2047 return;
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2048 }
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2049
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2050 g_return_if_fail(cond == PURPLE_INPUT_READ);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2051 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2052
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2053 /* Mark down that we got data, so we don't timeout. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2054 session->last_comm = time(NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2055
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2056 /* If approaching end of buffer, reallocate some more memory. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2057 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2058 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2059 "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: 24728
diff changeset
2060 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2061 session->rxsize += MSIM_READ_BUF_SIZE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2062 session->rxbuf = g_realloc(session->rxbuf, session->rxsize);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2063
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2064 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2065 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2066
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2067 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: 24728
diff changeset
2068 session->rxoff, session->rxsize,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2069 MSIM_READ_BUF_SIZE - session->rxoff - 1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2070
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2071 /* 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: 24728
diff changeset
2072 * the file descriptor, but it sometimes differs from the 'source' parameter.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2073 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2074 n = recv(session->fd,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2075 session->rxbuf + session->rxoff,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2076 session->rxsize - session->rxoff - 1, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2077
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2078 if (n < 0) {
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2079 gchar *tmp;
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2080
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2081 if (errno == EAGAIN)
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2082 /* No worries */
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2083 return;
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2084
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2085 tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2086 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2087 purple_connection_error_reason(gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2088 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2089 g_free(tmp);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2090 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2091 } else if (n == 0) {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2092 purple_connection_error_reason(gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2093 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2094 _("Server closed the connection"));
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2095 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2096 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2097
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2098 /* Null terminate */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2099 purple_debug_info("msim", "msim_input_cb: going to null terminate "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2100 "at n=%d\n", n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2101 session->rxbuf[session->rxoff + n] = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2102
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2103 #ifdef MSIM_CHECK_EMBEDDED_NULLS
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2104 /* 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: 24728
diff changeset
2105 if (strlen(session->rxbuf + session->rxoff) != n) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2106 /* Occurs after login, but it is not a null byte. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2107 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: 24728
diff changeset
2108 "--null byte encountered?\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2109 strlen(session->rxbuf + session->rxoff), n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2110 /*purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2111 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2112 "Invalid message - null byte on input"); */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2113 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2114 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2115 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2116
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2117 session->rxoff += n;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2118 purple_debug_info("msim", "msim_input_cb: read=%d\n", n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2119
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2120 #ifdef MSIM_DEBUG_RXBUF
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2121 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2122 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2123
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2124 /* Look for \\final\\ end markers. If found, process message. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2125 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2126 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2127
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2128 #ifdef MSIM_DEBUG_RXBUF
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2129 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2130 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2131 *end = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2132 msg = msim_parse(session->rxbuf);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2133 if (!msg) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2134 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2135 purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2136 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2137 _("Unable to parse message"));
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2138 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2139 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2140 /* Process message and then free it (processing function should
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2141 * clone message if it wants to keep it afterwards.) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2142 if (!msim_preprocess_incoming(session, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2143 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: 24728
diff changeset
2144 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2145 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2146 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2147
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2148 /* Move remaining part of buffer to beginning. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2149 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2150 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2151 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2152
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2153 /* Clear end of buffer
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2154 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2155 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2156 }
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2157 }
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2158
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2159 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2160 * Callback when connected. Sets up input handlers.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2161 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2162 * @param data A PurpleConnection pointer.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2163 * @param source File descriptor.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2164 * @param error_message
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2165 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2166 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2167 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
2168 {
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2169 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
2170 MsimSession *session;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2171
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2172 g_return_if_fail(data != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2173
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2174 gc = (PurpleConnection *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2175 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2176
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2177 if (source < 0) {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2178 gchar *tmp = g_strdup_printf(_("Unable to connect: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2179 error_message);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2180 purple_connection_error_reason (gc,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2181 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2182 g_free(tmp);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2183 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2184 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2185
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2186 session->fd = source;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2187
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2188 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: 24728
diff changeset
2189 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2190
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2191 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2192 * Start logging in to the MSIM servers.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2193 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2194 * @param acct Account information to use to login.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2195 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2196 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2197 msim_login(PurpleAccount *acct)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2198 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2199 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2200 const gchar *host;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2201 int port;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2202
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2203 g_return_if_fail(acct != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2204 g_return_if_fail(acct->username != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2205
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2206 purple_debug_info("msim", "logging in %s\n", acct->username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2207
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2208 gc = purple_account_get_connection(acct);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2209 gc->proto_data = msim_session_new(acct);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2210 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2211
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2212 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2213 * 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: 24748
diff changeset
2214 * 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: 24748
diff changeset
2215 * 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: 24748
diff changeset
2216 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2217 while (acct->deny != NULL)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2218 purple_privacy_deny_remove(acct, acct->deny->data, TRUE);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2219
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2220 /* 1. connect to server */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2221 purple_connection_update_progress(gc, _("Connecting"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2222 0, /* which connection step this is */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2223 4); /* total number of steps */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2224
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2225 host = purple_account_get_string(acct, "server", MSIM_SERVER);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2226 port = purple_account_get_int(acct, "port", MSIM_PORT);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2227
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2228 /* From purple.sf.net/api:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2229 * """Note that this function name can be misleading--although it is called
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2230 * "proxy connect," it is used for establishing any outgoing TCP connection,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2231 * whether through a proxy or not.""" */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2232
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2233 /* Calls msim_connect_cb when connected. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2234 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2235 /* TODO: try other ports if in auto mode, then save
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2236 * working port and try that first next time. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2237 purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2238 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27462
diff changeset
2239 _("Unable to connect"));
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2240 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2241 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2242 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2243
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2244 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2245 * Close the connection.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2246 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2247 * @param gc The connection.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2248 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2249 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2250 msim_close(PurpleConnection *gc)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2251 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2252 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2253
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2254 if (gc == NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2255 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2256 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2257
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2258 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2259 if (session == NULL)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2260 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2261
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2262 gc->proto_data = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2263
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2264 if (!MSIM_SESSION_VALID(session)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2265 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2266 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2267
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2268 if (session->gc->inpa) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2269 purple_input_remove(session->gc->inpa);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2270 }
24767
075d700fdc75 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents: 24763
diff changeset
2271 if (session->fd >= 0) {
075d700fdc75 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents: 24763
diff changeset
2272 close(session->fd);
075d700fdc75 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents: 24763
diff changeset
2273 session->fd = -1;
075d700fdc75 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents: 24763
diff changeset
2274 }
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2275
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2276 msim_session_destroy(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2277 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2278
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2279 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2280 * 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: 24728
diff changeset
2281 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2282 * @param gc Connection.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2283 * @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: 24728
diff changeset
2284 * @param message Instant message text to send.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2285 * @param flags Flags.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2286 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2287 * @return 1 if successful or postponed, -1 if failed
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2288 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2289 * Allows sending to a user by username, email address, or userid. If
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2290 * 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: 24728
diff changeset
2291 * This function does that by calling msim_postprocess_outgoing().
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2292 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2293 static int
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2294 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2295 PurpleMessageFlags flags)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2296 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2297 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2298 gchar *message_msim;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2299 int rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2300
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2301 g_return_val_if_fail(gc != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2302 g_return_val_if_fail(who != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2303 g_return_val_if_fail(message != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2304
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2305 /* 'flags' has many options, not used here. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2306
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2307 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2308
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2309 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2310
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2311 message_msim = html_to_msim_markup(session, message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2312
27236
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27219
diff changeset
2313 if (msim_send_bm(session, who, message_msim, MSIM_BM_ACTION_OR_IM_DELAYABLE)) {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2314 /* 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: 24728
diff changeset
2315 * 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: 24728
diff changeset
2316 * 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: 24728
diff changeset
2317 * retrieved from the server (which happens after this function returns).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2318 * 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: 24728
diff changeset
2319 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2320 rc = 1;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2321 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2322 rc = -1;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2323 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2324
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2325 g_free(message_msim);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2326
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2327 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2328 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2329
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2330 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2331 * Handle when our user starts or stops typing to another user.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2332 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2333 * @param gc
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2334 * @param name The buddy name to which our user is typing to
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2335 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2336 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2337 * @return 0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2338 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2339 static unsigned int
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2340 msim_send_typing(PurpleConnection *gc, const gchar *name,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2341 PurpleTypingState state)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2342 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2343 const gchar *typing_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2344 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2345
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2346 g_return_val_if_fail(gc != NULL, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2347 g_return_val_if_fail(name != NULL, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2348
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2349 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
2350
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2351 g_return_val_if_fail(MSIM_SESSION_VALID(session), 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2352
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2353 switch (state) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2354 case PURPLE_TYPING:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2355 typing_str = "%typing%";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2356 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2357
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2358 case PURPLE_TYPED:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2359 case PURPLE_NOT_TYPING:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2360 default:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2361 typing_str = "%stoptyping%";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2362 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2363 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2364
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2365 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str);
27236
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27219
diff changeset
2366 msim_send_bm(session, name, typing_str, MSIM_BM_ACTION_OR_IM_INSTANT);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2367 return 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2368 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2369
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2370 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2371 * Callback for msim_get_info(), for when user info is received.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2372 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2373 static void
24764
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24763
diff changeset
2374 msim_get_info_cb(MsimSession *session, const MsimMessage *user_info_msg,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2375 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2376 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2377 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2378 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2379 PurpleNotifyUserInfo *user_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2380 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2381
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2382 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2383
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2384 /* 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: 24728
diff changeset
2385 orthogonality. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2386 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2387 g_return_if_fail(msg != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2388
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2389 username = msim_msg_get_string(msg, "user");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2390 if (!username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2391 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: 24728
diff changeset
2392 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2393 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2394
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2395 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2396 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: 24728
diff changeset
2397
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2398 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2399
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2400 if (!user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2401 /* User isn't on blist, create a temporary user to store info. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2402 user = g_new0(MsimUser, 1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2403 user->temporary_user = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2404 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2405
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2406 /* Update user structure with new information */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2407 msim_store_user_info(session, user_info_msg, user);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2408
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2409 user_info = purple_notify_user_info_new();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2410
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2411 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2412 msim_append_user_info(session, user_info, user, TRUE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2413
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2414 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2415 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2416
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2417 purple_notify_user_info_destroy(user_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2418
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2419 if (user->temporary_user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2420 g_free(user->client_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2421 g_free(user->gender);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2422 g_free(user->location);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2423 g_free(user->headline);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2424 g_free(user->display_name);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2425 g_free(user->username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2426 g_free(user->image_url);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2427 g_free(user);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2428 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2429 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2430 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2431
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2432 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2433 * Retrieve a user's profile.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2434 * @param username Username, user ID, or email address to lookup.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2435 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2436 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2437 msim_get_info(PurpleConnection *gc, const gchar *username)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2438 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2439 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2440 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2441 gchar *user_to_lookup;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2442 MsimMessage *user_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2443
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2444 g_return_if_fail(gc != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2445 g_return_if_fail(username != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2446
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2447 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2448
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2449 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2450
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2451 /* Obtain uid of buddy. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2452 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2453
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2454 /* If is on buddy list, lookup by uid since it is faster. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2455 if (user && user->id) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2456 user_to_lookup = g_strdup_printf("%d", user->id);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2457 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2458 /* Looking up buddy not on blist. Lookup by whatever user entered. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2459 user_to_lookup = g_strdup(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2460 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2461
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2462 /* Pass the username to msim_get_info_cb(), because since we lookup
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2463 * by userid, the userinfo message will only contain the uid (not
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2464 * the username) but it would be useful to display the username too.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2465 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2466 user_msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2467 "user", MSIM_TYPE_STRING, g_strdup(username),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2468 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2469 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: 24728
diff changeset
2470
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2471 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: 24728
diff changeset
2472
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2473 g_free(user_to_lookup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2474 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2475
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2476 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2477 * Set status using an MSIM_STATUS_CODE_* value.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2478 * @param status_code An MSIM_STATUS_CODE_* value.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2479 * @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: 24728
diff changeset
2480 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2481 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2482 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2483 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2484 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2485 g_return_if_fail(statstring != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2486
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2487 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: 24728
diff changeset
2488 status_code, statstring);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2489
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2490 if (!msim_send(session,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2491 "status", MSIM_TYPE_INTEGER, status_code,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2492 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2493 "statstring", MSIM_TYPE_STRING, statstring,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2494 "locstring", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2495 NULL))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2496 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2497 purple_debug_info("msim", "msim_set_status: failed to set status\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2498 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2499 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2500
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2501 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2502 * Set your status - callback for when user manually sets it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2503 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2504 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2505 msim_set_status(PurpleAccount *account, PurpleStatus *status)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2506 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2507 PurpleStatusType *type;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2508 PurplePresence *pres;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2509 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2510 guint status_code;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2511 const gchar *message;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2512 gchar *stripped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2513 gchar *unrecognized_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2514
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2515 session = (MsimSession *)account->gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2516
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2517 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2518
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2519 type = purple_status_get_type(status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2520 pres = purple_status_get_presence(status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2521
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2522 switch (purple_status_type_get_primitive(type)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2523 case PURPLE_STATUS_AVAILABLE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2524 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: 24728
diff changeset
2525 MSIM_STATUS_CODE_ONLINE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2526 status_code = MSIM_STATUS_CODE_ONLINE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2527 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2528
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2529 case PURPLE_STATUS_INVISIBLE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2530 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: 24728
diff changeset
2531 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2532 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2533 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2534
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2535 case PURPLE_STATUS_AWAY:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2536 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: 24728
diff changeset
2537 MSIM_STATUS_CODE_AWAY);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2538 status_code = MSIM_STATUS_CODE_AWAY;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2539 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2540
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2541 default:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2542 purple_debug_info("msim", "msim_set_status: unknown "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2543 "status interpreting as online");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2544 status_code = MSIM_STATUS_CODE_ONLINE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2545
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2546 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: 24728
diff changeset
2547 purple_status_type_get_primitive(type));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2548 msim_unrecognized(session, NULL, unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2549 g_free(unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2550
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2551 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2552 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2553
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2554 message = purple_status_get_attr_string(status, "message");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2555
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2556 /* Status strings are plain text. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2557 if (message != NULL)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2558 stripped = purple_markup_strip_html(message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2559 else
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2560 stripped = g_strdup("");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2561
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2562 msim_set_status_code(session, status_code, stripped);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2563
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2564 /* If we should be idle, set that status. Time is irrelevant here. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2565 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: 24728
diff changeset
2566 msim_set_idle(account->gc, 1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2567 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2568
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2569 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2570 * Go idle.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2571 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2572 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2573 msim_set_idle(PurpleConnection *gc, int time)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2574 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2575 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2576 PurpleStatus *status;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2577
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2578 g_return_if_fail(gc != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2579
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2580 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2581
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2582 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2583
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2584 status = purple_account_get_active_status(session->account);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2585
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2586 if (time == 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2587 /* Going back from idle. In msim, idle is mutually exclusive
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2588 * 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: 24728
diff changeset
2589 * 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: 24728
diff changeset
2590 * libpurple says I should be.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2591 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2592 msim_set_status(session->account, status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2593 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2594 const gchar *message;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2595 gchar *stripped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2596
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2597 /* Set the idle message to the status message from the real
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2598 * current status.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2599 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2600 message = purple_status_get_attr_string(status, "message");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2601 if (message != NULL)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2602 stripped = purple_markup_strip_html(message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2603 else
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2604 stripped = g_strdup("");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2605
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2606 /* msim doesn't support idle time, so just go idle */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2607 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2608 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2609 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2610
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2611 /**
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2612 * @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: 24748
diff changeset
2613 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2614 static gboolean
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2615 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: 24748
diff changeset
2616 {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2617 MsimMessage *msg;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2618 GList *list;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2619
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2620 list = NULL;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2621 list = g_list_prepend(list, allow ? "a+" : "a-");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2622 list = g_list_prepend(list, "<uid>");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2623 list = g_list_prepend(list, block ? "b+" : "b-");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2624 list = g_list_prepend(list, "<uid>");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2625 list = g_list_reverse(list);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2626
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2627 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2628 "blocklist", MSIM_TYPE_BOOLEAN, TRUE,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2629 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2630 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2631 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2632 "idlist", MSIM_TYPE_LIST, list,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2633 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2634
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2635 if (!msim_postprocess_outgoing(session, msg, name, "idlist", NULL)) {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2636 purple_debug_error("myspace",
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2637 "blocklist command failed for %s, allow=%d, block=%d\n",
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2638 name, allow, block);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2639 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2640 return FALSE;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2641 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2642
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2643 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2644
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2645 return TRUE;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2646 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2647
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2648 /**
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2649 * Add a buddy to user's buddy list.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2650 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2651 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2652 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2653 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2654 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2655 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2656 MsimMessage *msg_persist;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2657 MsimMessage *body;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2658 const char *name, *gname;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2659
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2660 session = (MsimSession *)gc->proto_data;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2661 name = purple_buddy_get_name(buddy);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2662 gname = group ? purple_group_get_name(group) : NULL;
24509
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24409
diff changeset
2663
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24409
diff changeset
2664 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: 24409
diff changeset
2665 return;
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24409
diff changeset
2666
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2667 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n",
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2668 name, gname ? gname : "(no group)");
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2669
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2670 msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2671 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2672 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2673 /* "newprofileid" will be inserted here with uid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2674 "reason", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2675 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2676
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2677 if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2678 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2679 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2680 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2681 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2682 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2683
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2684 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2685 * buddy list since Purple adds it locally. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2686
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2687 body = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2688 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2689 "GroupName", MSIM_TYPE_STRING, g_strdup(gname),
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2690 "Position", MSIM_TYPE_INTEGER, 1000,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2691 "Visibility", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2692 "NickName", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2693 "NameSelect", MSIM_TYPE_INTEGER, 0,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2694 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2695
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2696 /* TODO: Update blocklist. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2697
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2698 msg_persist = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2699 "persist", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2700 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2701 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2702 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2703 "uid", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2704 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2705 /* TODO: Use msim_new_reply_callback to get rid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2706 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2707 "body", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2708 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2709
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2710 if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL))
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2711 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2712 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2713 msim_msg_free(msg_persist);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2714 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2715 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2716 msim_msg_free(msg_persist);
24748
75ecd41a64ba Fix a bug where if "Show our presence only to people on our buddy list"
Mark Doliner <mark@kingant.net>
parents: 24747
diff changeset
2717
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2718 /* Add to allow list, remove from block list */
25378
47540809ae91 explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
parents: 24768 25377
diff changeset
2719 msim_update_blocklist_for_buddy(session, name, TRUE, FALSE);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2720 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2721
25383
b5df6cd20d8b Compile!
Richard Laager <rlaager@wiktel.com>
parents: 25382
diff changeset
2722 static void
b5df6cd20d8b Compile!
Richard Laager <rlaager@wiktel.com>
parents: 25382
diff changeset
2723 msim_buddy_free(PurpleBuddy *buddy)
b5df6cd20d8b Compile!
Richard Laager <rlaager@wiktel.com>
parents: 25382
diff changeset
2724 {
b5df6cd20d8b Compile!
Richard Laager <rlaager@wiktel.com>
parents: 25382
diff changeset
2725 msim_user_free(purple_buddy_get_protocol_data(buddy));
b5df6cd20d8b Compile!
Richard Laager <rlaager@wiktel.com>
parents: 25382
diff changeset
2726 purple_buddy_set_protocol_data(buddy, NULL);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2727 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2728
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2729 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2730 * Remove a buddy from the user's buddy list.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2731 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2732 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2733 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2734 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2735 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2736 MsimMessage *delbuddy_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2737 MsimMessage *persist_msg;
25377
a4a17fe80160 explicit merge of 'f7807039eeef499a403d638cbcb94060a1d33eea'
Richard Laager <rlaager@wiktel.com>
parents: 25376 24748
diff changeset
2738 const char *name;
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2739
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2740 session = (MsimSession *)gc->proto_data;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2741 name = purple_buddy_get_name(buddy);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2742
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2743 delbuddy_msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2744 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2745 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2746 /* 'delprofileid' with uid will be inserted here. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2747 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2748
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2749 if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2750 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2751 msim_msg_free(delbuddy_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2752 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2753 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2754 msim_msg_free(delbuddy_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2755
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2756 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
2757 "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
2758 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2759 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2760 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2761 "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
2762 "uid", MSIM_TYPE_INTEGER, session->userid,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2763 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2764 /* <uid> will be replaced by postprocessing */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2765 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2766 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2767
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23334
diff changeset
2768 if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2769 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2770 msim_msg_free(persist_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2771 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2772 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2773 msim_msg_free(persist_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2774
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2775 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2776 * 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: 24748
diff changeset
2777 * 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: 24748
diff changeset
2778 * does it)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2779 */
25383
b5df6cd20d8b Compile!
Richard Laager <rlaager@wiktel.com>
parents: 25382
diff changeset
2780 if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) {
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2781 purple_notify_error(NULL, NULL,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2782 _("Failed to remove buddy"), _("blocklist command failed"));
24853
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24770
diff changeset
2783 return;
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24770
diff changeset
2784 }
25382
c0b42d6c2785 propagate from branch 'im.pidgin.pidgin' (head f018e11a7ea08e07f22667e6daca2ec7e64f9710)
Richard Laager <rlaager@wiktel.com>
parents: 25379 24853
diff changeset
2785 msim_buddy_free(buddy);
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2786 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2787
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2788 /**
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2789 * 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: 24748
diff changeset
2790 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2791 static void
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2792 msim_add_deny(PurpleConnection *gc, const char *name)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2793 {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2794 MsimSession *session;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2795 MsimMessage *msg, *body;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2796
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2797 session = (MsimSession *)gc->proto_data;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2798
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2799 /* Remove from buddy list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2800 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2801 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2802 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2803 /* 'delprofileid' with uid will be inserted here. */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2804 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2805 if (!msim_postprocess_outgoing(session, msg, name, "delprofileid", NULL))
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2806 purple_debug_error("myspace", "delbuddy command failed\n");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2807 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2808
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2809 /* 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: 24748
diff changeset
2810 msim_update_blocklist_for_buddy(session, name, FALSE, TRUE);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2811
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2812 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2813 * 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: 24748
diff changeset
2814 * are blocked if we log in with another client
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2815 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2816 body = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2817 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2818 "Visibility", MSIM_TYPE_INTEGER, 2,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2819 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2820 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2821 "persist", MSIM_TYPE_INTEGER, 1,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2822 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2823 "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: 24748
diff changeset
2824 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2825 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2826 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2827 "body", MSIM_TYPE_DICTIONARY, body,
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2828 NULL);
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2829 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL))
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2830 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: 24748
diff changeset
2831 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2832
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2833 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2834 * 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: 24748
diff changeset
2835 * 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: 24748
diff changeset
2836 * libpurple's buddy list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2837 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2838 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2839
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2840 /**
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2841 * Remove a buddy from the user's block list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2842 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2843 static void
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2844 msim_rem_deny(PurpleConnection *gc, const char *name)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2845 {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2846 MsimSession *session;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2847 MsimMessage *msg, *body;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2848
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2849 session = (MsimSession *)gc->proto_data;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2850
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2851 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2852 * 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: 24748
diff changeset
2853 * 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: 24748
diff changeset
2854 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2855 body = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2856 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2857 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2858 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2859 "persist", MSIM_TYPE_INTEGER, 1,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2860 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2861 "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: 24748
diff changeset
2862 "dsn", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_DSN,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2863 "lid", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_LID,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2864 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2865 "body", MSIM_TYPE_DICTIONARY, body,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2866 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2867 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL))
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2868 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: 24748
diff changeset
2869 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2870
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2871 /* Remove from our approve list and our block list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
2872 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
2873 }
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2874
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2875 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2876 * 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: 24728
diff changeset
2877 * spaces, lowercases the string, and looks up user IDs to usernames.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2878 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2879 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2880 * Borrowed this code from oscar_normalize. Added checking for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2881 * "if userid, get name before normalizing"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2882 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2883 static const char *msim_normalize(const PurpleAccount *account, const char *str) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2884 static char normalized[BUF_LEN];
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2885 char *tmp1, *tmp2;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2886 int i, j;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2887 guint id;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2888
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2889 g_return_val_if_fail(str != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2890
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2891 if (msim_is_userid(str)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2892 /* Have user ID, we need to get their username first :) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2893 const char *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2894
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2895 /* 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: 24728
diff changeset
2896 if (!account || !account->gc)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2897 return str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2898
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2899 id = atol(str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2900 username = msim_uid2username_from_blist((PurpleAccount *)account, id);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2901 if (!username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2902 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2903 /* Note: manual lookup using msim_lookup_user() is a problem inside
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2904 * msim_normalize(), because msim_lookup_user() calls a callback function
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2905 * when the user information has been looked up, but msim_normalize() expects
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2906 * the result immediately. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2907 strncpy(normalized, str, BUF_LEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2908 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2909 strncpy(normalized, username, BUF_LEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2910 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2911 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2912 /* Have username. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2913 strncpy(normalized, str, BUF_LEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2914 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2915
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2916 /* Strip spaces. */
24894
cead8692e35f Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24853
diff changeset
2917 for (i=0, j=0; normalized[j]; j++) {
cead8692e35f Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24853
diff changeset
2918 if (normalized[j] != ' ')
cead8692e35f Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24853
diff changeset
2919 normalized[i++] = normalized[j];
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2920 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2921 normalized[i] = '\0';
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2922
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2923 /* Lowercase and perform UTF-8 normalization. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2924 tmp1 = g_utf8_strdown(normalized, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2925 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2926 g_snprintf(normalized, sizeof(normalized), "%s", tmp2);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2927 g_free(tmp2);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2928 g_free(tmp1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2929
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2930 /* TODO: re-add caps and spacing back to what the user wanted.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2931 * User can format their own names, for example 'msimprpl' is shown
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2932 * as 'MsIm PrPl' in the official client.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2933 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2934 * TODO: file a ticket to add this enhancement.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2935 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2936
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2937 return normalized;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2938 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2939
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2940 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2941 * Return whether the buddy can be messaged while offline.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2942 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2943 * The protocol supports offline messages in just the same way as online
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2944 * messages.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2945 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2946 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2947 msim_offline_message(const PurpleBuddy *buddy)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
2948 {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2949 return TRUE;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
2950 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
2951
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2952 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2953 * Send raw data to the server, possibly with embedded NULs.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2954 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2955 * 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: 24728
diff changeset
2956 * control of what is sent over the connection. Inside this prpl,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2957 * msim_send_raw() is used, since it sends NUL-terminated strings (easier).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2958 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2959 * @param gc PurpleConnection
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2960 * @param buf Buffer to send
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2961 * @param total_bytes Size of buffer to send
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2962 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2963 * @return Bytes successfully sent, or -1 on error.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2964 */
24743
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24735
diff changeset
2965 /*
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24735
diff changeset
2966 * 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: 24735
diff changeset
2967 * 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: 24735
diff changeset
2968 */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2969 static int
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2970 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2971 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2972 int total_bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2973 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2974
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2975 g_return_val_if_fail(gc != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2976 g_return_val_if_fail(buf != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2977 g_return_val_if_fail(total_bytes >= 0, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2978
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2979 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2980
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2981 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2982
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2983 /* Loop until all data is sent, or a failure occurs. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2984 total_bytes_sent = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2985 do {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2986 int bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2987
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2988 bytes_sent = send(session->fd, buf + total_bytes_sent,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2989 total_bytes - total_bytes_sent, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2990
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2991 if (bytes_sent < 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2992 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2993 buf, g_strerror(errno));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2994 return total_bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2995 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2996 total_bytes_sent += bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2997
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2998 } while(total_bytes_sent < total_bytes);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
2999
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3000 return total_bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3001 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3002
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3003 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3004 * Send raw data (given as a NUL-terminated string) to the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3005 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3006 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3007 * @param msg The raw data to send, in a NUL-terminated string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3008 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3009 * @return TRUE if succeeded, FALSE if not.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3010 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3011 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3012 gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3013 msim_send_raw(MsimSession *session, const gchar *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3014 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3015 size_t len;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3016
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3017 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3018 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3019
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3020 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3021 len = strlen(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3022
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3023 return msim_send_really_raw(session->gc, msg, len) == len;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3024 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3025
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3026 static GHashTable *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3027 msim_get_account_text_table(PurpleAccount *unused)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3028 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3029 GHashTable *table;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3030
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3031 table = g_hash_table_new(g_str_hash, g_str_equal);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3032
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3033 g_hash_table_insert(table, "login_label", (gpointer)_("Email Address..."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3034
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3035 return table;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3036 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3037
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3038 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3039 * Callbacks called by Purple, to access this plugin.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3040 */
20057
27754fc4d72e static this.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19926
diff changeset
3041 static PurplePluginProtocolInfo prpl_info = {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3042 /* options */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3043 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
3044 | OPT_PROTO_MAIL_CHECK,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3045
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3046 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3047 NULL, /* user_splits */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3048 NULL, /* protocol_options */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3049 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3050 msim_list_icon, /* list_icon */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3051 NULL, /* list_emblems */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3052 msim_status_text, /* status_text */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3053 msim_tooltip_text, /* tooltip_text */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3054 msim_status_types, /* status_types */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3055 msim_blist_node_menu, /* blist_node_menu */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3056 NULL, /* chat_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3057 NULL, /* chat_info_defaults */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3058 msim_login, /* login */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3059 msim_close, /* close */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3060 msim_send_im, /* send_im */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3061 NULL, /* set_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3062 msim_send_typing, /* send_typing */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3063 msim_get_info, /* get_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3064 msim_set_status, /* set_status */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3065 msim_set_idle, /* set_idle */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3066 NULL, /* change_passwd */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3067 msim_add_buddy, /* add_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3068 NULL, /* add_buddies */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3069 msim_remove_buddy, /* remove_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3070 NULL, /* remove_buddies */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3071 NULL, /* add_permit */
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
3072 msim_add_deny, /* add_deny */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3073 NULL, /* rem_permit */
24750
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24748
diff changeset
3074 msim_rem_deny, /* rem_deny */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3075 NULL, /* set_permit_deny */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3076 NULL, /* join_chat */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3077 NULL, /* reject chat invite */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3078 NULL, /* get_chat_name */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3079 NULL, /* chat_invite */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3080 NULL, /* chat_leave */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3081 NULL, /* chat_whisper */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3082 NULL, /* chat_send */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3083 NULL, /* keepalive */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3084 NULL, /* register_user */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3085 NULL, /* get_cb_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3086 NULL, /* get_cb_away */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3087 NULL, /* alias_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3088 NULL, /* group_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3089 NULL, /* rename_group */
24853
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24770
diff changeset
3090 msim_buddy_free, /* buddy_free */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3091 NULL, /* convo_closed */
22100
1226083ed7e2 Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21950
diff changeset
3092 msim_normalize, /* normalize */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3093 NULL, /* set_buddy_icon */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3094 NULL, /* remove_group */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3095 NULL, /* get_cb_real_name */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3096 NULL, /* set_chat_topic */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3097 NULL, /* find_blist_chat */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3098 NULL, /* roomlist_get_list */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3099 NULL, /* roomlist_cancel */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3100 NULL, /* roomlist_expand_category */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3101 NULL, /* can_receive_file */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3102 NULL, /* send_file */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3103 NULL, /* new_xfer */
19243
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3104 msim_offline_message, /* offline_message */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3105 NULL, /* whiteboard_prpl_ops */
19243
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3106 msim_send_really_raw, /* send_raw */
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3107 NULL, /* roomlist_room_serialize */
19712
eabc8a32b1e4 Fix up an apparently bad merge with the reserved fields here.
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
3108 NULL, /* unregister_user */
19243
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3109 msim_send_attention, /* send_attention */
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3110 msim_attention_types, /* attention_types */
26062
f0c2e27c7ae7 propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26054 24853
diff changeset
3111 sizeof(PurplePluginProtocolInfo), /* struct_size */
23112
bb41bdce8981 Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23111
diff changeset
3112 msim_get_account_text_table, /* get_account_text_table */
26062
f0c2e27c7ae7 propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26054 24853
diff changeset
3113 NULL, /* initiate_media */
f0c2e27c7ae7 propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26054 24853
diff changeset
3114 NULL /* can_do_media */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3115 };
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3116
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3117 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3118 * Load the plugin.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3119 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3120 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3121 msim_load(PurplePlugin *plugin)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3122 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3123 /* 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: 24728
diff changeset
3124 if (!purple_ciphers_find_cipher("rc4")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3125 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: 24728
diff changeset
3126 purple_notify_error(plugin, _("Missing Cipher"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3127 _("The RC4 cipher could not be found"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3128 _("Upgrade "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3129 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3130 "plugin will not be loaded."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3131 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3132 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3133 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3134 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3135
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3136 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3137 * Called when friends have been imported to buddy list on server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3138 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3139 static void
24764
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24763
diff changeset
3140 msim_import_friends_cb(MsimSession *session, const MsimMessage *reply, gpointer user_data)
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3141 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3142 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3143 gchar *completed;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3144
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3145 /* Check if the friends were imported successfully. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3146 body = msim_msg_get_dictionary(reply, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3147 g_return_if_fail(body != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3148 completed = msim_msg_get_string(body, "Completed");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3149 msim_msg_free(body);
25168
27e6ab4ff554 This should fix a sporadic crash? The behavior before was clearly wrong--
Mark Doliner <mark@kingant.net>
parents: 25057
diff changeset
3150 g_return_if_fail(completed != NULL);
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3151 if (!g_str_equal(completed, "True"))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3152 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3153 purple_debug_info("msim_import_friends_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3154 "failed to import friends: %s", completed);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3155 purple_notify_error(session->account, _("Add friends from MySpace.com"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3156 _("Importing friends failed"), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3157 g_free(completed);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3158 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3159 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3160 g_free(completed);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3161
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3162 purple_debug_info("msim_import_friends_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3163 "added friends to server-side buddy list, requesting new contacts from server");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3164
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3165 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3166
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3167 /* TODO: show, X friends have been added */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3168 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3169
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3170 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3171 * Import friends from myspace.com.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3172 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3173 static void msim_import_friends(PurplePluginAction *action)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3174 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3175 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3176 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3177 gchar *group_name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3178
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3179 gc = (PurpleConnection *)action->context;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3180 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3181
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3182 group_name = "MySpace Friends";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3183
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3184 g_return_if_fail(msim_send(session,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3185 "persist", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3186 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3187 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3188 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3189 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3190 "uid", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3191 "rid", MSIM_TYPE_INTEGER,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3192 msim_new_reply_callback(session, msim_import_friends_cb, NULL),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3193 "body", MSIM_TYPE_STRING,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3194 g_strdup_printf("GroupName=%s", group_name),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3195 NULL));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3196 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3197
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3198 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3199 * Actions menu for account.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3200 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3201 static GList *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3202 msim_actions(PurplePlugin *plugin, gpointer context)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3203 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3204 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3205 GList *menu;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3206 PurplePluginAction *act;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3207
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3208 gc = (PurpleConnection *)context;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3209
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3210 menu = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3211
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3212 #if 0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3213 /* TODO: find out how */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3214 act = purple_plugin_action_new(_("Find people..."), msim_);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3215 menu = g_list_append(menu, act);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3216
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3217 act = purple_plugin_action_new(_("Change IM name..."), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3218 menu = g_list_append(menu, act);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3219 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3220
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3221 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: 24728
diff changeset
3222 menu = g_list_append(menu, act);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3223
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3224 return menu;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3225 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3226
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3227 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3228 * Based on MSN's plugin info comments.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3229 */
19720
b2d213681176 Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <pidgin@unreliablesource.net>
parents: 19713
diff changeset
3230 static PurplePluginInfo info = {
23111
718a9c287839 Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23107
diff changeset
3231 PURPLE_PLUGIN_MAGIC,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3232 PURPLE_MAJOR_VERSION,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3233 PURPLE_MINOR_VERSION,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3234 PURPLE_PLUGIN_PROTOCOL, /**< type */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3235 NULL, /**< ui_requirement */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3236 0, /**< flags */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3237 NULL, /**< dependencies */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3238 PURPLE_PRIORITY_DEFAULT, /**< priority */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3239
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3240 "prpl-myspace", /**< id */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3241 "MySpaceIM", /**< name */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3242 MSIM_PRPL_VERSION_STRING, /**< version */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3243 /** summary */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3244 "MySpaceIM Protocol Plugin",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3245 /** description */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3246 "MySpaceIM Protocol Plugin",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3247 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3248 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3249
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3250 msim_load, /**< load */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3251 NULL, /**< unload */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3252 NULL, /**< destroy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3253 NULL, /**< ui_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3254 &prpl_info, /**< extra_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3255 NULL, /**< prefs_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3256 msim_actions, /**< msim_actions */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3257 NULL, /**< reserved1 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3258 NULL, /**< reserved2 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3259 NULL, /**< reserved3 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3260 NULL /**< reserved4 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3261 };
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3262
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3263 #ifdef MSIM_SELF_TEST
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3264 /*
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3265 * Test functions.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3266 * 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
3267 * 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
3268 * how msimprpl is architected.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3269 */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3270
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3271 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3272 * Test MsimMessage for basic functionality.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3273 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3274 static int
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3275 msim_test_msg(void)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3276 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3277 MsimMessage *msg, *msg_cloned, *msg2;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3278 GList *list;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3279 gchar *packed, *packed_expected, *packed_cloned;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3280 guint failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3281
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3282 failures = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3283
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3284 purple_debug_info("msim", "\n\nTesting MsimMessage\n");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3285 msg = msim_msg_new(NULL); /* Create a new, empty message. */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3286
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3287 /* 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
3288 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
3289 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
3290 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
3291 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
3292 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
3293 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
3294 msim_msg_dump("msg debug str=%s\n", msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3295 packed = msim_msg_pack(msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3296
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3297 purple_debug_info("msim", "msg packed=%s\n", packed);
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 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1"
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3300 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\";
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3301
19428
1fa10842eb83 In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19427
diff changeset
3302 if (!g_str_equal(packed, packed_expected)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3303 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
3304 ++failures, packed, packed_expected);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3305 }
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
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3308 msg_cloned = msim_msg_clone(msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3309 packed_cloned = msim_msg_pack(msg_cloned);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3310
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3311 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
3312 if (!g_str_equal(packed, packed_cloned)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3313 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
3314 ++failures, packed_cloned, packed);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3315 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3316
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3317 g_free(packed);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3318 g_free(packed_cloned);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3319 msim_msg_free(msg_cloned);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3320 msim_msg_free(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 /* Try some of the more advanced functionality */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3323 list = NULL;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3324
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3325 list = g_list_prepend(list, "item3");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3326 list = g_list_prepend(list, "item2");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3327 list = g_list_prepend(list, "item1");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3328 list = g_list_prepend(list, "item0");
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 msg = msim_msg_new(NULL);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3331 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
3332 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
3333 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
3334 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
3335 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3336
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3337 msim_msg_dump("msg with list=%s\n", msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3338 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
3339
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3340 msg2 = msim_msg_new(NULL);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3341 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
3342 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3343 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
3344 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
3345
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3346 msim_msg_free(msg2);
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 return failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3349 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3350
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3351 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3352 * Test protocol-level escaping/unescaping.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3353 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3354 static int
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3355 msim_test_escaping(void)
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 guint failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3358 gchar *raw, *escaped, *unescaped, *expected;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3359
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3360 failures = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3361
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3362 purple_debug_info("msim", "\n\nTesting escaping\n");
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 raw = "hello/world\\hello/world";
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3365
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3366 escaped = msim_escape(raw);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3367 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
3368 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
3369 if (!g_str_equal(escaped, expected)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3370 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
3371 ++failures, escaped, expected);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3372 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3373
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3374
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3375 unescaped = msim_unescape(escaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3376 g_free(escaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3377 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
3378 if (!g_str_equal(raw, unescaped)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3379 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
3380 ++failures, raw, unescaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3381 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3382
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3383 return failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3384 }
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3385
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3386 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3387 msim_test_all(void)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3388 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3389 guint failures;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3390
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3391 failures = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3392 failures += msim_test_msg();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3393 failures += msim_test_escaping();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3394
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3395 if (failures) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3396 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3397 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3398 purple_debug_info("msim", "msim_test_all - all tests passed!\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3399 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3400 exit(0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3401 }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3402 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3403
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3404 #ifdef MSIM_CHECK_NEWER_VERSION
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3405 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3406 * Callback for when a currentversion.txt has been downloaded.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3407 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3408 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3409 msim_check_newer_version_cb(PurpleUtilFetchUrlData *url_data,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3410 gpointer user_data,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3411 const gchar *url_text,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3412 gsize len,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3413 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
3414 {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3415 GKeyFile *keyfile;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3416 GError *error;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3417 GString *data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3418 gchar *newest_filever;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3419
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3420 if (!url_text) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3421 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3422 "got error: %s\n", error_message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3423 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3424 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3425
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3426 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3427 "url_text=%s\n", url_text ? url_text : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3428
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3429 /* Prepend [group] so that GKeyFile can parse it (requires a group). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3430 data = g_string_new(url_text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3431 purple_debug_info("msim", "data=%s\n", data->str
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3432 ? data->str : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3433 data = g_string_prepend(data, "[group]\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3434
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3435 purple_debug_info("msim", "data=%s\n", data->str
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3436 ? data->str : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3437
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3438 /* url_text is variable=data\n...†*/
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3439
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3440 /* Check FILEVER, 1.0.716.0. 716 is build, MSIM_CLIENT_VERSION */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3441 /* New (english) version can be downloaded from SETUPURL+SETUPFILE */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3442
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3443 error = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3444 keyfile = g_key_file_new();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3445
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3446 /* Default list seperator is ;, but currentversion.txt doesn't have
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3447 * these, so set to an unused character to avoid parsing problems. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3448 g_key_file_set_list_separator(keyfile, '\0');
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3449
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3450 g_key_file_load_from_data(keyfile, data->str, data->len,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3451 G_KEY_FILE_NONE, &error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3452 g_string_free(data, TRUE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3453
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3454 if (error != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3455 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3456 "couldn't parse, error: %d %d %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3457 error->domain, error->code, error->message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3458 g_error_free(error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3459 return;
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3460 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3461
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3462 gchar **ks;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3463 guint n;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3464 ks = g_key_file_get_keys(keyfile, "group", &n, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3465 purple_debug_info("msim", "n=%d\n", n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3466 guint i;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3467 for (i = 0; ks[i] != NULL; ++i)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3468 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3469 purple_debug_info("msim", "%d=%s\n", i, ks[i]);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3470 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3471
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3472 newest_filever = g_key_file_get_string(keyfile, "group",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3473 "FILEVER", &error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3474
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3475 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3476 "newest filever: %s\n", newest_filever ?
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3477 newest_filever : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3478 if (error != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3479 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3480 "error: %d %d %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3481 error->domain, error->code, error->message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3482 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
3483 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3484
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3485 g_key_file_free(keyfile);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3486
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3487 exit(0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3488 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3489 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3490
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3491 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3492 Handle a myim:addContact command, after username has been looked up.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3493 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3494 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3495 msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3496 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3497 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3498 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3499
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3500 body = msim_msg_get_dictionary(userinfo, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3501 username = msim_msg_get_string(body, "UserName");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3502 msim_msg_free(body);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3503
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3504 if (!username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3505 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3506
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3507 uid = msim_msg_get_integer(userinfo, "UserID");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3508 g_return_if_fail(uid != 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3509
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3510 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
3511 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3512
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3513 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3514
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3515 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
3516 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3517
19441
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3518 /* 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
3519 * 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
3520 * looked up if possible? */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3521
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3522 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3523 * Handle a myim:sendIM URI command, after username has been looked up.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3524 */
19441
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3525 static void
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3526 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
3527 {
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3528 PurpleConversation *conv;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3529 MsimMessage *body;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3530 gchar *username;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3531
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3532 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
3533 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
3534 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
3535
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3536 if (!username) {
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3537 guint uid;
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 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
3540 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
3541
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3542 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
3543 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3544
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3545
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3546 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
3547 if (!conv) {
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3548 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
3549 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
3550 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3551
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3552 /* 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
3553 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
3554
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3555 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
3556 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3557
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3558 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3559 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
3560 {
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3561 PurpleAccount *account;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3562 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3563 GList *l;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3564 gchar *uid_str, *cid_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3565 guint uid, cid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3566
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3567 if (g_ascii_strcasecmp(proto, "myim"))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3568 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3569
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3570 /* Parameters are case-insensitive. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3571 uid_str = g_hash_table_lookup(params, "uid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3572 cid_str = g_hash_table_lookup(params, "cid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3573
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3574 uid = uid_str ? atol(uid_str) : 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3575 cid = cid_str ? atol(cid_str) : 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3576
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3577 /* Need a contact. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3578 g_return_val_if_fail(cid != 0, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3579
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3580 /* 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: 24728
diff changeset
3581 * 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: 24728
diff changeset
3582
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3583 /* 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: 24728
diff changeset
3584 * directly use cid directly from parameters, because it might not be numeric.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3585 * 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: 24728
diff changeset
3586 * the official MySpaceIM client works, so don't provide that functionality. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3587 cid_str = g_strdup_printf("%d", cid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3588
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3589
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3590 /* 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: 24728
diff changeset
3591 account = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3592 l = purple_accounts_get_all();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3593 while (l) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3594 if (purple_account_is_connected(l->data) &&
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3595 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3596 account = l->data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3597 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3598 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3599 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
3600 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3601
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3602 if (!account) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3603 purple_notify_error(NULL, _("myim URL handler"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3604 _("No suitable MySpaceIM account could be found to open this myim URL."),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3605 _("Enable the proper MySpaceIM account and try again."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3606 g_free(cid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3607 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3608 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3609
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3610 session = (MsimSession *)account->gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3611 g_return_val_if_fail(session != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3612
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3613 /* Lookup userid to username. TODO: push this down, to IM sending/contact
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3614 * adding functions. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3615
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3616 /* myim:sendIM?uID=USERID&cID=CONTACTID */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3617 if (!g_ascii_strcasecmp(cmd, "sendIM")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3618 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: 24728
diff changeset
3619 g_free(cid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3620 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3621
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3622 /* myim:addContact?uID=USERID&cID=CONTACTID */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3623 } else if (!g_ascii_strcasecmp(cmd, "addContact")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3624 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: 24728
diff changeset
3625 g_free(cid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3626 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3627 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3628
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3629 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
3630 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3631
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3632 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3633 * Initialize plugin.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3634 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3635 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3636 init_plugin(PurplePlugin *plugin)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3637 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3638 #ifdef MSIM_SELF_TEST
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3639 msim_test_all();
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3640 exit(0);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3641 #endif /* MSIM_SELF_TEST */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3642
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3643 PurpleAccountOption *option;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3644 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
3645
19598
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3646 #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
3647 /* 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
3648 * 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
3649 * 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
3650 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
3651 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
3652 "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
3653 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
3654 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
3655 #endif
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3656
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3657 /* 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
3658 * 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
3659 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
3660 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
3661
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3662 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
3663 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
3664
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3665 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3666 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
3667 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
3668
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3669 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
3670 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
3671 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3672
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3673 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS
19733
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: 19720
diff changeset
3674 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
3675 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
3676 #endif
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 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3679 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
3680 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
3681
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3682 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
3683 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
3684 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3685
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3686 /* Code below only runs once. Based on oscar.c's oscar_init(). */
24731
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24728
diff changeset
3687 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
3688 return;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3689
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3690 initialized = TRUE;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3691
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3692 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
3693 PURPLE_CALLBACK(msim_uri_handler), NULL);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3694 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3695
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3696 PURPLE_INIT_PLUGIN(myspace, init_plugin, info);