annotate libpurple/protocols/myspace/myspace.c @ 31736:462c19eb31d8

Remove duplicate calls to msn_slpmsg_set_slplink. This function is already called when a slpmsg is created, and calling it again will place the slpmsg on the slplink list an extra time. If the slpmsg is freed, then the first entry is removed, but the second remains, and can cause crashes due to invalid memory accesses. Fixes #14307.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Thu, 14 Jul 2011 05:54:10 +0000
parents 79ae7200a11a
children a5b556ac1de5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2 * MySpaceIM Protocol Plugin
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
4 * \author Jeff Connelly
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
5 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
6 * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
7 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
8 * Based on Purple's "C Plugin HOWTO" hello world example.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
9 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
10 * Code also drawn from mockprpl:
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
11 * http://snarfed.org/space/purple+mock+protocol+plugin
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
12 * Copyright (C) 2004-2007, Ryan Barrett <mockprpl@ryanb.org>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
13 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
14 * and some constructs also based on existing Purple plugins, which are:
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
15 * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
16 * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
17 * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
18 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
19 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
20 * This program is free software; you can redistribute it and/or modify
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
21 * it under the terms of the GNU General Public License as published by
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
22 * the Free Software Foundation; either version 2 of the License, or
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
23 * (at your option) any later version.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
24 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
25 * This program is distributed in the hope that it will be useful,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
28 * GNU General Public License for more details.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
29 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
30 * You should have received a copy of the GNU General Public License
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
31 * along with this program; if not, write to the Free Software
19681
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19661
diff changeset
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
33 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
34
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
35 #define PURPLE_PLUGIN
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
36
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
37 #include "myspace.h"
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
38
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
39 #include "privacy.h"
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
40
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
41 static void msim_set_status(PurpleAccount *account, PurpleStatus *status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
42 static void msim_set_idle(PurpleConnection *gc, int time);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
43
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
44 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
45 * Perform actual postprocessing on a message, adding userid as specified.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
46 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
47 * @param msg The message to postprocess.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
48 * @param uid_before Name of field where to insert new field before, or NULL for end.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
49 * @param uid_field_name Name of field to add uid to.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
50 * @param uid The userid to insert.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
51 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
52 * If the field named by uid_field_name already exists, then its string contents will
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
53 * be used for the field, except "<uid>" will be replaced by the userid.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
54 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
55 * If the field named by uid_field_name does not exist, it will be added before the
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
56 * field named by uid_before, as an integer, with the userid.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
57 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
58 * Does not handle sending, or scheduling userid lookup. For that, see msim_postprocess_outgoing().
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
59 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
60 static MsimMessage *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
61 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
62 const gchar *uid_field_name, guint uid)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
63 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
64 MsimMessageElement *elem;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
65
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
66 /* First, check - if the field already exists, replace <uid> within it */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
67 if ((elem = msim_msg_get(msg, uid_field_name)) != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
68 gchar *fmt_string;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
69 gchar *uid_str, *new_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
70
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
71 /* Get the packed element, flattening it. This allows <uid> to be
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
72 * replaced within nested data structures, since the replacement is done
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
73 * on the linear, packed data, not on a complicated data structure.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
74 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
75 * For example, if the field was originally a dictionary or a list, you
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
76 * would have to iterate over all the items in it to see what needs to
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
77 * be replaced. But by packing it first, the <uid> marker is easily replaced
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
78 * just by a string replacement.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
79 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
80 fmt_string = msim_msg_pack_element_data(elem);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
81
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
82 uid_str = g_strdup_printf("%d", uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
83 new_str = purple_strreplace(fmt_string, "<uid>", uid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
84 g_free(uid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
85 g_free(fmt_string);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
86
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
87 /* Free the old element data */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
88 msim_msg_free_element_data(elem->data);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
89
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
90 /* Replace it with our new data */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
91 elem->data = new_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
92 elem->type = MSIM_TYPE_RAW;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
93
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
94 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
95 /* Otherwise, insert new field into outgoing message. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
96 msg = msim_msg_insert_before(msg, uid_before, uid_field_name, MSIM_TYPE_INTEGER, GUINT_TO_POINTER(uid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
97 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
98
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
99 return msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
100 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
101
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
102 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
103 * Callback for msim_postprocess_outgoing() to add a userid to a message, and send it (once receiving userid).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
104 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
105 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
106 * @param userinfo The user information reply message, containing the user ID
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
107 * @param data The message to postprocess and send.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
108 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
109 * The data message should contain these fields:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
110 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
111 * _uid_field_name: string, name of field to add with userid from userinfo message
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
112 * _uid_before: string, name of field before field to insert, or NULL for end
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
113 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
114 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
115 msim_postprocess_outgoing_cb(MsimSession *session, const MsimMessage *userinfo,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
116 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
117 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
118 gchar *uid_field_name, *uid_before, *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
119 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
120 MsimMessage *msg, *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
121
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
122 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
123
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
124 /* Obtain userid from userinfo message. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
125 body = msim_msg_get_dictionary(userinfo, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
126 g_return_if_fail(body != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
127
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
128 uid = msim_msg_get_integer(body, "UserID");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
129 msim_msg_free(body);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
130
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
131 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
132
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
133 if (!uid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
134 gchar *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
135
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
136 msg = g_strdup_printf(_("No such user: %s"), username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
137 if (!purple_conv_present_error(username, session->account, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
138 purple_notify_error(NULL, NULL, _("User lookup"), msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
139 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
140
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
141 g_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
142 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
143 /* TODO: free
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
144 * msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
145 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
146 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
147 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
148
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
149 uid_field_name = msim_msg_get_string(msg, "_uid_field_name");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
150 uid_before = msim_msg_get_string(msg, "_uid_before");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
151
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
152 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
153
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
154 /* Send */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
155 if (!msim_msg_send(session, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
156 msim_msg_dump("msim_postprocess_outgoing_cb: sending failed for message: %s\n", msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
157 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
158
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
159
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
160 /* Free field names AFTER sending message, because MsimMessage does NOT copy
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
161 * field names - instead, treats them as static strings (which they usually are).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
162 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
163 g_free(uid_field_name);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
164 g_free(uid_before);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
165 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
166 /* TODO: free
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
167 * msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
168 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
169 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
170
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
171 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
172 * Postprocess and send a message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
173 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
174 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
175 * @param msg Message to postprocess. Will NOT be freed.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
176 * @param username Username to resolve. Assumed to be a static string (will not be freed or copied).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
177 * @param uid_field_name Name of new field to add, containing uid of username. Static string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
178 * @param uid_before Name of existing field to insert username field before. Static string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
179 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
180 * @return TRUE if successful.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
181 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
182 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
183 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
184 const gchar *username, const gchar *uid_field_name,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
185 const gchar *uid_before)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
186 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
187 PurpleBuddy *buddy;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
188 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
189 gboolean rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
190
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
191 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
192
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
193 /* Store information for msim_postprocess_outgoing_cb(). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
194 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
195 msg = msim_msg_append(msg, "_uid_field_name", MSIM_TYPE_STRING, g_strdup(uid_field_name));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
196 msg = msim_msg_append(msg, "_uid_before", MSIM_TYPE_STRING, g_strdup(uid_before));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
197
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
198 /* First, try the most obvious. If numeric userid is given, use that directly. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
199 if (msim_is_userid(username)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
200 uid = atol(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
201 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
202 /* Next, see if on buddy list and know uid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
203 buddy = purple_find_buddy(session->account, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
204 if (buddy) {
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
205 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
206 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
207 uid = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
208 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
209
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
210 if (!buddy || !uid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
211 /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
212 purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
213 username ? username : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
214 msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
215 return TRUE; /* not sure of status yet - haven't sent! */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
216 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
217 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
218
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
219 /* Already have uid, postprocess and send msg immediately. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
220 purple_debug_info("msim", "msim_postprocess_outgoing: found username %s has uid %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
221 username ? username : "(NULL)", uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
222
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
223 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
224
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
225 rc = msim_msg_send(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
226
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
227 /* TODO: free
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
228 * msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
229 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
230
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
231 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
232 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
233
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
234 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
235 * Send a buddy message of a given type.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
236 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
237 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
238 * @param who Username to send message to.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
239 * @param text Message text to send. Not freed; will be copied.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
240 * @param type A MSIM_BM_* constant.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
241 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
242 * @return TRUE if success, FALSE if fail.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
243 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
244 * Buddy messages ('bm') include instant messages, action messages, status messages, etc.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
245 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
246 gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
247 msim_send_bm(MsimSession *session, const gchar *who, const gchar *text,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
248 int type)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
249 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
250 gboolean rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
251 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
252 const gchar *from_username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
253
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
254 g_return_val_if_fail(who != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
255 g_return_val_if_fail(text != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
256
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
257 from_username = session->account->username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
258
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
259 g_return_val_if_fail(from_username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
260
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
261 purple_debug_info("msim", "sending %d message from %s to %s: %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
262 type, from_username, who, text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
263
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
264 msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
265 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
266 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
267 /* 't' will be inserted here */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
268 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
269 "msg", MSIM_TYPE_STRING, g_strdup(text),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
270 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
271
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
272 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
273
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
274 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
275
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
276 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
277 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
278
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
279 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
280 * Lookup a username by userid, from buddy list.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
281 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
282 * @param wanted_uid
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
283 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
284 * @return Username of wanted_uid, if on blist, or NULL.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
285 * This is a static string, so don't free it. Copy it if needed.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
286 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
287 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
288 static const gchar *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
289 msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
290 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
291 GSList *buddies, *cur;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
292 const gchar *ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
293
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
294 buddies = purple_find_buddies(account, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
295
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
296 if (!buddies)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
297 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
298 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
299 return NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
300 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
301
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
302 ret = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
303
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
304 for (cur = buddies; cur != NULL; cur = g_slist_next(cur))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
305 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
306 PurpleBuddy *buddy;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
307 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
308 const gchar *name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
309
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
310 /* See finch/gnthistory.c */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
311 buddy = cur->data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
312
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
313 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
314 name = purple_buddy_get_name(buddy);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
315
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
316 if (uid == wanted_uid)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
317 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
318 ret = name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
319 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
320 }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
321 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
322
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
323 g_slist_free(buddies);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
324 return ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
325 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
326
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
327 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
328 * Setup a callback, to be called when a reply is received with the returned rid.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
329 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
330 * @param cb The callback, an MSIM_USER_LOOKUP_CB.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
331 * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
332 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
333 * @return The request/reply ID, used to link replies with requests, or -1.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
334 * Put the rid in your request, 'rid' field.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
335 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
336 * TODO: Make more generic and more specific:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
337 * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
338 * 2) data - make it an MsimMessage?
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
339 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
340 guint
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
341 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
342 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
343 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
344 guint rid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
345
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
346 rid = session->next_rid++;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
347
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
348 g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
349 g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
350
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
351 return rid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
352 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
353
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
354 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
355 * Return the icon name for a buddy and account.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
356 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
357 * @param acct The account to find the icon for, or NULL for protocol icon.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
358 * @param buddy The buddy to find the icon for, or NULL for the account icon.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
359 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
360 * @return The base icon name string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
361 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
362 static const gchar *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
363 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
364 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
365 /* Use a MySpace icon submitted by hbons at
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
366 * http://developer.pidgin.im/wiki/MySpaceIM. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
367 return "myspace";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
368 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
369
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
370 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
371 * Obtain the status text for a buddy.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
372 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
373 * @param buddy The buddy to obtain status text for.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
374 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
375 * @return Status text, or NULL if error. Caller g_free()'s.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
376 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
377 static char *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
378 msim_status_text(PurpleBuddy *buddy)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
379 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
380 MsimUser *user;
31529
79ae7200a11a Silence a swath of warnings regarding set-but-unused.
Paul Aurich <paul@darkrain42.org>
parents: 31397
diff changeset
381 const gchar *display_name = NULL, *headline = NULL;
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
382 PurpleAccount *account;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
383
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
384 g_return_val_if_fail(buddy != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
385
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
386 account = purple_buddy_get_account(buddy);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
387
31203
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
388 user = msim_get_user_from_buddy(buddy, FALSE);
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
389 if (user != NULL) {
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
390 /* Retrieve display name and/or headline, depending on user preference. */
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
391 if (purple_account_get_bool(account, "show_headline", TRUE)) {
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
392 headline = user->headline;
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
393 }
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
394
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
395 if (purple_account_get_bool(account, "show_display_name", FALSE)) {
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
396 display_name = user->display_name;
258fec7797b9 Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents: 29847
diff changeset
397 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
398 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
399
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
400 /* Return appropriate combination of display name and/or headline, or neither. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
401
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
402 if (display_name && headline) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
403 return g_strconcat(display_name, " ", headline, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
404 } else if (display_name) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
405 return g_strdup(display_name);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
406 } else if (headline) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
407 return g_strdup(headline);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
408 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
409
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
410 return NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
411 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
412
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
413 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
414 * Obtain the tooltip text for a buddy.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
415 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
416 * @param buddy Buddy to obtain tooltip text on.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
417 * @param user_info Variable modified to have the tooltip text.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
418 * @param full TRUE if should obtain full tooltip text.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
419 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
420 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
421 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
422 gboolean full)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
423 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
424 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
425
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
426 g_return_if_fail(buddy != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
427 g_return_if_fail(user_info != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
428
25237
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 25172 24805
diff changeset
429 user = msim_get_user_from_buddy(buddy, TRUE);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
430
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
431 if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
432 MsimSession *session;
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
433 PurpleAccount *account = purple_buddy_get_account(buddy);
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
434 PurpleConnection *gc = purple_account_get_connection(account);
28977
e137c1fc216a Check if memory has been freed by looking at its contents does not work
Mark Doliner <mark@kingant.net>
parents: 28975
diff changeset
435
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
436 session = (MsimSession *)gc->proto_data;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
437
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
438 /* TODO: if (full), do something different? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
439
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
440 /* TODO: request information? have to figure out how to do
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
441 * the asynchronous lookup like oscar does (tooltip shows
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
442 * 'retrieving...' if not yet available, then changes when it is).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
443 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
444 * Right now, only show what we have on hand.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
445 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
446
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
447 /* Show abbreviated user info. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
448 msim_append_user_info(session, user_info, user, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
449 }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
450 }
22160
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22159
diff changeset
451
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
452 /**
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
453 * Get possible user status types. Based on mockprpl.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
454 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
455 * @return GList of status types.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
456 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
457 static GList *
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
458 msim_status_types(PurpleAccount *acct)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
459 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
460 GList *types;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
461 PurpleStatusType *status;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
462
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
463 purple_debug_info("myspace", "returning status types\n");
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 types = NULL;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
466
22160
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22159
diff changeset
467 /* 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
468 #define _MSIM_ADD_NEW_STATUS(prim) status = \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
469 purple_status_type_new_with_attrs( \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
470 prim, /* PurpleStatusPrimitive */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
471 NULL, /* id - use default */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
472 NULL, /* name - use default */ \
24464
3a3d36791a47 I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents: 24406
diff changeset
473 TRUE, /* saveable */ \
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
474 TRUE, /* user_settable */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
475 FALSE, /* not independent */ \
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 /* Attributes - each status can have a message. */ \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
478 "message", \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
479 _("Message"), \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
480 purple_value_new(PURPLE_TYPE_STRING), \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
481 NULL); \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
482 \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
483 \
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
484 types = g_list_append(types, status)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
485
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
486
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
487 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
488 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
489 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
490 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
491
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
492 /* 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
493 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
494 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
495 "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
496 NULL, /* name - use default */
24464
3a3d36791a47 I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents: 24406
diff changeset
497 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
498 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
499 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
500
29682
29df7408df03 Eliminate the name collisions on "Title". I have a few qualms:
Paul Aurich <paul@darkrain42.org>
parents: 29478
diff changeset
501 PURPLE_TUNE_ARTIST, _("Tune Artist"), purple_value_new(PURPLE_TYPE_STRING),
29df7408df03 Eliminate the name collisions on "Title". I have a few qualms:
Paul Aurich <paul@darkrain42.org>
parents: 29478
diff changeset
502 PURPLE_TUNE_TITLE, _("Tune Title"), 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
503 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
504
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 types = g_list_append(types, status);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
506
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
507 return types;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
508 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
509
27155
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
510 /*
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
511 * TODO: This define is stolen from oscar.h.
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
512 * It's also in yahoo.h.
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
513 * It should be in libpurple/util.c
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
514 */
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
515 #define msim_put32(buf, data) ( \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
516 (*((buf)) = (unsigned char)((data)>>24)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
517 (*((buf)+1) = (unsigned char)((data)>>16)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
518 (*((buf)+2) = (unsigned char)((data)>>8)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
519 (*((buf)+3) = (unsigned char)(data)&0xff), \
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
520 4)
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
521
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
522 /**
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
523 * 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
524 *
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
525 * @param nonce The base64 encoded nonce ('nc') field from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
526 * @param email User's email address (used as login name).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
527 * @param password User's cleartext password.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
528 * @param response_len Will be written with response length.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
529 *
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
530 * @return Binary login challenge response, ready to send to the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
531 * 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
532 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
533 static gchar *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
534 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE],
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
535 const gchar *email, const gchar *password, guint *response_len)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
536 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
537 PurpleCipherContext *key_context;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
538 PurpleCipher *sha1;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
539 PurpleCipherContext *rc4;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
540
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
541 guchar hash_pw[HASH_SIZE];
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
542 guchar key[HASH_SIZE];
24914
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
543 gchar *password_truncated, *password_utf16le, *password_utf8_lc;
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
544 GString *data;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
545 guchar *data_out;
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
546 size_t data_out_len;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
547 gsize conv_bytes_read, conv_bytes_written;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
548 GError *conv_error;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
549 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
550 int i;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
551 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
552
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
553 g_return_val_if_fail(nonce != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
554 g_return_val_if_fail(email != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
555 g_return_val_if_fail(password != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
556 g_return_val_if_fail(response_len != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
557
24914
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
558 /*
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
559 * Truncate password to 10 characters. Their "change password"
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
560 * web page doesn't let you enter more than 10 characters, but you
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
561 * can enter more than 10 when logging in on myspace.com and they
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
562 * truncate it.
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
563 */
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
564 password_truncated = g_strndup(password, 10);
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
565
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
566 /* Convert password to lowercase (required for passwords containing
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
567 * uppercase characters). MySpace passwords are lowercase,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
568 * see ticket #2066. */
24914
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
569 password_utf8_lc = g_utf8_strdown(password_truncated, -1);
1981b04de92e MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents: 24885
diff changeset
570 g_free(password_truncated);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
571
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
572 /* Convert ASCII password to UTF16 little endian */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
573 purple_debug_info("msim", "converting password to UTF-16LE\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
574 conv_error = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
575 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
576 &conv_bytes_read, &conv_bytes_written, &conv_error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
577 g_free(password_utf8_lc);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
578
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
579 if (conv_error != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
580 purple_debug_error("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
581 "g_convert password UTF8->UTF16LE failed: %s",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
582 conv_error->message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
583 g_error_free(conv_error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
584 return NULL;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
585 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
586
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
587 /* Compute password hash */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
588 purple_cipher_digest_region("sha1", (guchar *)password_utf16le,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
589 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
590 g_free(password_utf16le);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
591
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
592 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
593 purple_debug_info("msim", "pwhash = ");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
594 for (i = 0; i < sizeof(hash_pw); i++)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
595 purple_debug_info("msim", "%.2x ", hash_pw[i]);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
596 purple_debug_info("msim", "\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
597 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
598
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
599 /* key = sha1(sha1(pw) + nonce2) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
600 sha1 = purple_ciphers_find_cipher("sha1");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
601 key_context = purple_cipher_context_new(sha1, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
602 purple_cipher_context_append(key_context, hash_pw, HASH_SIZE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
603 purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
604 purple_cipher_context_digest(key_context, sizeof(key), key, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
605 purple_cipher_context_destroy(key_context);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
606
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
607 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
608 purple_debug_info("msim", "key = ");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
609 for (i = 0; i < sizeof(key); i++) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
610 purple_debug_info("msim", "%.2x ", key[i]);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
611 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
612 purple_debug_info("msim", "\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
613 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
614
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
615 rc4 = purple_cipher_context_new_by_name("rc4", NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
616
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
617 /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
618 * but only first 0x10 used for the RC4 key. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
619 purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
620 purple_cipher_context_set_key(rc4, key);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
621
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
622 /* rc4 encrypt:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
623 * nonce1+email+IP list */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
624
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
625 data = g_string_new(NULL);
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
626 g_string_append_len(data, nonce, NONCE_SIZE);
27155
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
627
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
628 /* Include the null terminator */
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
629 g_string_append_len(data, email, strlen(email) + 1);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
630
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
631 while (data->len % 4 != 0)
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
632 g_string_append_c(data, 0xfb);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
633
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
634 #ifdef SEND_OUR_IP_ADDRESSES
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
635 /* TODO: Obtain IPs of network interfaces instead of using this hardcoded value */
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
636 g_string_set_size(data, data->len + 4);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
637 msim_put32(data->str + data->len - 4, MSIM_LOGIN_IP_LIST_LEN);
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
638 g_string_append_len(data, MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN);
27155
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
639 #else
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
640 g_string_set_size(data, data->len + 4);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
641 msim_put32(data->str + data->len - 4, 0);
8cb0f676c70d Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents: 27154
diff changeset
642 #endif /* !SEND_OUR_IP_ADDRESSES */
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
643
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
644 data_out = g_new0(guchar, data->len);
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
645
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
646 purple_cipher_context_encrypt(rc4, (const guchar *)data->str,
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
647 data->len, data_out, &data_out_len);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
648 purple_cipher_context_destroy(rc4);
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
649
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
650 if (data_out_len != data->len) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
651 purple_debug_info("msim", "msim_compute_login_response: "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
652 "data length mismatch: %" G_GSIZE_FORMAT " != %"
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
653 G_GSIZE_FORMAT "\n", data_out_len, data->len);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
654 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
655
24768
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
656 g_string_free(data, TRUE);
3c224208b814 Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents: 24767
diff changeset
657
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
658 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
659 purple_debug_info("msim", "response=<%s>\n", data_out);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
660 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
661
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
662 *response_len = data_out_len;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
663
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
664 return (gchar *)data_out;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
665 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
666
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
667 /**
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
668 * Process a login challenge, sending a response.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
669 *
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
670 * @param session
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
671 * @param msg Login challenge message.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
672 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
673 * @return TRUE if successful, FALSE if not
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
674 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
675 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
676 msim_login_challenge(MsimSession *session, MsimMessage *msg)
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 PurpleAccount *account;
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
679 gchar *response;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
680 guint response_len;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
681 gchar *nc;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
682 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
683 gboolean ret;
19242
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 g_return_val_if_fail(msg != NULL, FALSE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
686
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
687 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
688
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
689 account = session->account;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
690
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
691 g_return_val_if_fail(account != NULL, FALSE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
692
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
693 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
694
22486
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
695 purple_debug_info("msim", "nc is %" G_GSIZE_FORMAT
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
696 " bytes, decoded\n", nc_len);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
697
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
698 if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) {
22486
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
699 purple_debug_info("msim", "bad nc length: %" G_GSIZE_MODIFIER
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
700 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH);
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 20892
diff changeset
701 purple_connection_error_reason (session->gc,
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 20892
diff changeset
702 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20121
e4bcdd9622c2 purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents: 20057
diff changeset
703 _("Unexpected challenge length from server"));
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
704 return 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
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
707 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
708
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
709 response_len = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
710 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
711
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
712 g_free(nc);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
713
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
714 ret = msim_send(session,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
715 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
716 /* This is actually user's email address. */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
717 "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
718 /* 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
719 "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
720 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
721 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
722 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
723 "reconn", MSIM_TYPE_INTEGER, 0,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
724 "status", MSIM_TYPE_INTEGER, 100,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
725 "id", MSIM_TYPE_INTEGER, 1,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
726 NULL);
20658
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
727
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
728 g_free(response);
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
729
7efdc052539d Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents: 20628
diff changeset
730 return ret;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
731 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
732
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
733 /**
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
734 * Process unrecognized information.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
735 *
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
736 * @param session
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
737 * @param msg An MsimMessage that was unrecognized, or NULL.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
738 * @param note Information on what was unrecognized, or NULL.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
739 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
740 void
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
741 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
742 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
743 /* TODO: Some more context, outwardly equivalent to a backtrace,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
744 * 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
745 * But not too much information so that a user
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
746 * posting this dump reveals confidential information.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
747 */
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 /* 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
750 * if they wish, to help add support for new messages (inspired
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
751 * by Alexandr Shutko, who maintains OSCAR protocol documentation).
22156
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
752 *
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
753 * Filed enhancement ticket for libpurple as #4688.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
754 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
755
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
756 purple_debug_info("msim", "Unrecognized data on account for %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
757 (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
758 session->account->username : "(NULL)");
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
759 if (note) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
760 purple_debug_info("msim", "(Note: %s)\n", note);
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
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
763 if (msg) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
764 msim_msg_dump("Unrecognized message dump: %s\n", msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
765 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
766 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
767
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
768 /** Called when the session key arrives to check whether the user
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
769 * has a username, and set one if desired. */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
770 static gboolean
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
771 msim_is_username_set(MsimSession *session, MsimMessage *msg)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
772 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
773 g_return_val_if_fail(msg != NULL, FALSE);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
774 g_return_val_if_fail(session->gc != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
775
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
776 session->sesskey = msim_msg_get_integer(msg, "sesskey");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
777 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
778
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
779 /* What is proof? Used to be uid, but now is 52 base64'd bytes... */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
780
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
781 /* Comes with: proof,profileid,userid,uniquenick -- all same values
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
782 * some of the time, but can vary. This is our own user ID. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
783 session->userid = msim_msg_get_integer(msg, "userid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
784
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
785 /* Save uid to account so this account can be looked up by uid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
786 purple_account_set_int(session->account, "uid", session->userid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
787
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
788 /* Not sure what profileid is used for. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
789 if (msim_msg_get_integer(msg, "profileid") != session->userid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
790 msim_unrecognized(session, msg,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
791 "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
792 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
793
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
794 /* We now know are our own username, only after we're logged in..
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
795 * which is weird, but happens because you login with your email
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
796 * address and not username. Will be freed in msim_session_destroy(). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
797 session->username = msim_msg_get_string(msg, "uniquenick");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
798
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
799 /* If user lacks a username, help them get one. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
800 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
801 purple_debug_info("msim_is_username_set", "no username is set\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
802 purple_request_yes_no(session->gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
803 _("MySpaceIM - No Username Set"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
804 _("You appear to have no MySpace username."),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
805 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
806 0,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
807 session->account,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
808 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
809 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
810 session->gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
811 G_CALLBACK(msim_set_username_cb),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
812 G_CALLBACK(msim_do_not_set_username_cb));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
813 purple_debug_info("msim_is_username_set","'username not set' alert prompted\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
814 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
815 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
816 return TRUE;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
817 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
818
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
819 #ifdef MSIM_USE_KEEPALIVE
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
820 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
821 * Check if the connection is still alive, based on last communication.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
822 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
823 static gboolean
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
824 msim_check_alive(gpointer data)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
825 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
826 MsimSession *session;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
827 time_t delta;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
828
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
829 session = (MsimSession *)data;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
830
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
831 delta = time(NULL) - session->last_comm;
24682
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
832
22156
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
833 /* 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
834 if (delta >= MSIM_KEEPALIVE_INTERVAL) {
24682
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
835 purple_debug_info("msim",
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
836 "msim_check_alive: %zu > interval of %d, presumed dead\n",
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
837 delta, MSIM_KEEPALIVE_INTERVAL);
22156
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22100
diff changeset
838 purple_connection_error_reason(session->gc,
24682
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
839 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
8f757b2139d2 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents: 24464
diff changeset
840 _("Lost connection with server"));
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
841
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
842 return FALSE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
843 }
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 return TRUE;
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 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
848
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
849 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
850 * Handle mail reply checks.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
851 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
852 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
853 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
854 {
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
855 MsimMessage *body;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
856 guint i, n;
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
857 /* Information for each new inbox message type. */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
858 static struct
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
859 {
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
860 const gchar *key;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
861 guint bit;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
862 const gchar *url;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
863 const gchar *text;
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
864 } message_types[] = {
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
865 { "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
866 { "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
867 { "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
868 { "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
869 { "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
870 };
25606
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
871 const gchar *froms[G_N_ELEMENTS(message_types) + 1] = { "" },
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
872 *tos[G_N_ELEMENTS(message_types) + 1] = { "" },
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
873 *urls[G_N_ELEMENTS(message_types) + 1] = { "" },
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
874 *subjects[G_N_ELEMENTS(message_types) + 1] = { "" };
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
875
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
876 g_return_if_fail(reply != NULL);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
877
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
878 /* Can't write _()'d strings in array initializers. Workaround. */
25606
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
879 /* khc: then use N_() in the array initializer and use _() when they are
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
880 used */
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
881 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
882 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
883 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
884 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
885 message_types[4].text = _("New picture comments");
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
886
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
887 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
888
430827922828 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents: 21709
diff changeset
889 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
890 return;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
891
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
892 n = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
893
25606
2260e5b0ca91 *** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
894 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
895 const gchar *key;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
896 guint bit;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
897
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
898 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
899 bit = message_types[i].bit;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
900
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
901 if (msim_msg_get(body, key)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
902 /* Notify only on when _changes_ from no mail -> has mail
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
903 * (edge triggered) */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
904 if (!(session->inbox_status & bit)) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
905 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
906 key ? key : "(NULL)", n);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
907
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
908 subjects[n] = message_types[i].text;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
909 froms[n] = _("MySpace");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
910 tos[n] = session->username;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
911 /* TODO: append token, web challenge, so automatically logs in.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
912 * 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
913 */
19430
0104035fd510 In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19429
diff changeset
914 urls[n] = message_types[i].url;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
915
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
916 ++n;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
917 } else {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
918 purple_debug_info("msim",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
919 "msim_check_inbox_cb: already notified of %s\n",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
920 key ? key : "(NULL)");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
921 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
922
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
923 session->inbox_status |= bit;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
924 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
925 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
926
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
927 if (n) {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
928 purple_debug_info("msim",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
929 "msim_check_inbox_cb: notifying of %d\n", n);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
930
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
931 /* 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
932 purple_notify_emails(session->gc, /* handle */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
933 n, /* count */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
934 TRUE, /* detailed */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
935 subjects, froms, tos, urls,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
936 NULL, /* PurpleNotifyCloseCallback cb */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
937 NULL); /* gpointer user_data */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
938
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
939 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
940
19251
78558930d9f3 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19249
diff changeset
941 msim_msg_free(body);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
942 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
943
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
944 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
945 * Send request to check if there is new mail.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
946 */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
947 static gboolean
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
948 msim_check_inbox(gpointer data)
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 MsimSession *session;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
951
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
952 session = (MsimSession *)data;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
953
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
954 purple_debug_info("msim", "msim_check_inbox: checking mail\n");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
955 g_return_val_if_fail(msim_send(session,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
956 "persist", MSIM_TYPE_INTEGER, 1,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
957 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
958 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
959 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
960 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
961 "uid", MSIM_TYPE_INTEGER, session->userid,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
962 "rid", MSIM_TYPE_INTEGER,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
963 msim_new_reply_callback(session, msim_check_inbox_cb, NULL),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
964 "body", MSIM_TYPE_STRING, g_strdup(""),
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
965 NULL), TRUE);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
966
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
967 /* Always return true, so that we keep checking for mail. */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
968 return TRUE;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
969 }
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 /**
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
972 * Add contact from server to buddy list, after looking up username.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
973 * 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
974 *
34a1957de14b Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19255
diff changeset
975 * @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
976 */
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
977 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
978 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
979 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
980 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
981 PurpleGroup *group;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
982 PurpleBuddy *buddy;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
983 MsimUser *user;
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
984 gchar *username, *group_name, *display_name;
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
985 guint uid, visibility;
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
986
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
987 contact_info = (MsimMessage *)data;
22486
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
988 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
989 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
990
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
991 if (!user_lookup_info) {
22159
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22158
diff changeset
992 username = g_strdup(msim_uid2username_from_blist(session->account, uid));
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
993 display_name = NULL;
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
994 g_return_if_fail(username != NULL);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
995 } else {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
996 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
997 username = msim_msg_get_string(user_lookup_info_body, "UserName");
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
998 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
999 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
1000 g_return_if_fail(username != NULL);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1001 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1002
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1003 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
1004 "*** 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
1005
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1006 /* 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
1007 * the documentation claims). */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1008 group_name = msim_msg_get_string(contact_info, "GroupName");
22983
882af25a8edf Fix handling of empty groups in MySpace. Fixes #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22980
diff changeset
1009 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
1010 g_free(group_name);
22980
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1011 group_name = g_strdup(_("IM Friends"));
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1012 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
1013 }
22980
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1014 group = purple_find_group(group_name);
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1015 if (!group) {
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1016 group = purple_group_new(group_name);
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1017 /* Add group to beginning. See #2752. */
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1018 purple_blist_add_group(group, NULL);
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1019 }
77fc073e5a0b Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22607
diff changeset
1020 g_free(group_name);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1021
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1022 visibility = msim_msg_get_integer(contact_info, "Visibility");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1023 if (visibility == 2) {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1024 /* This buddy is blocked (and therefore not on our buddy list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1025 purple_privacy_deny_add(session->account, username, TRUE);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1026 msim_msg_free(contact_info);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1027 g_free(username);
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1028 g_free(display_name);
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1029 return;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1030 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
1031
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1032 /* 2. Get or create buddy */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1033 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
1034 if (!buddy) {
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1035 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
1036 "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
1037 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
1038 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1039
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1040 /* 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
1041 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
1042
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1043 if (strtol(username, NULL, 10) == uid) {
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1044 /*
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1045 * This user has not set their username! Set their server
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1046 * alias to their display name so that we don't see a bunch
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1047 * of numbers in the buddy list.
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1048 */
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1049 if (display_name != NULL) {
25887
47540809ae91 explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
parents: 24803 25886
diff changeset
1050 purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name);
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1051 serv_got_alias(session->gc, username, display_name);
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1052 } else {
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1053 serv_got_alias(session->gc, username,
25887
47540809ae91 explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
parents: 24803 25886
diff changeset
1054 purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName"));
24796
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1055 }
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1056 }
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1057 g_free(display_name);
c2054d8d23fc Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents: 24785
diff changeset
1058
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1059 /* 3. Update buddy information */
25237
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 25172 24805
diff changeset
1060 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
1061
24684
128a77f3b3c4 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents: 24683
diff changeset
1062 user->id = uid;
128a77f3b3c4 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents: 24683
diff changeset
1063 /* Keep track of the user ID across sessions */
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
1064 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
1065
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1066 /* 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
1067 * AvatarURL, Headline, ContactID. */
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1068 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
1069
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1070 /* 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
1071 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
1072
9f95357c21b9 In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22225
diff changeset
1073 g_free(username);
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1074 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1075
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1076 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1077 * Add first ContactID in contact_info to buddy's list. Used to add
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1078 * 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
1079 *
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1080 * @return TRUE if added.
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1081 */
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1082 static gboolean
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1083 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
1084 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1085 guint uid;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1086 const gchar *username;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1087
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1088 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
1089 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
1090
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1091 /* Lookup the username, since NickName and IMName is unreliable */
22159
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22158
diff changeset
1092 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
1093 if (!username) {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1094 gchar *uid_str;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1095
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1096 uid_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
1097 purple_debug_info("msim_add_contact_from_server",
22486
3225c99785b8 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents: 22478
diff changeset
1098 "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
1099 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
1100 g_free(uid_str);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1101 } 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
1102 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
1103 }
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1104
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1105 /* 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
1106 * their username. */
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1107 return TRUE;
19255
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
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1110 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1111 * Called when contact list is received from server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1112 */
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1113 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
1114 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
1115 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1116 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
1117 gchar *msg;
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1118 guint buddy_count;
19255
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 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
1121
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1122 buddy_count = 0;
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1123
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1124 for (body_node = body;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1125 body_node != NULL;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1126 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
1127 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1128 MsimMessageElement *elem;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1129
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1130 elem = (MsimMessageElement *)body_node->data;
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1131
19428
1fa10842eb83 In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19427
diff changeset
1132 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
1133 {
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1134 /* 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
1135 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
1136 ++buddy_count;
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1137 }
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1138 }
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
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1141 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
1142 case MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS:
23332
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23319
diff changeset
1143 msg = g_strdup_printf(ngettext("%d buddy was added or updated from the server (including buddies already on the server-side list)",
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23319
diff changeset
1144 "%d buddies were added or updated from the server (including buddies already on the server-side list)",
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23319
diff changeset
1145 buddy_count),
19ab21882b38 "This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents: 23319
diff changeset
1146 buddy_count);
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1147 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
1148 g_free(msg);
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1149 break;
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1150
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1151 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
1152 /* TODO */
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1153 break;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1154
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1155 case MSIM_CONTACT_LIST_INITIAL_FRIENDS:
25419
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1156 /* The session is now set up, ready to be connected. This emits the
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1157 * signedOn signal, so clients can now do anything with msimprpl, and
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1158 * we're ready for it (session key, userid, username all setup). */
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1159 purple_connection_update_progress(session->gc, _("Connected"), 3, 4);
4278d13b5471 Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents: 24923
diff changeset
1160 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
1161 break;
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1162 }
19354
b22a33d3fc95 Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19353
diff changeset
1163
19255
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1164 msim_msg_free(body);
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1165 }
1ea47b06f1a6 Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19251
diff changeset
1166
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1167 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1168 * Get contact list, calling msim_got_contact_list() with
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1169 * what_to_do_after as user_data gpointer.
24771
9f6ae339e849 Minor comment change
Mark Doliner <mark@kingant.net>
parents: 24770
diff changeset
1170 *
9f6ae339e849 Minor comment change
Mark Doliner <mark@kingant.net>
parents: 24770
diff changeset
1171 * @param what_to_do_after should be one of the MSIM_CONTACT_LIST_* #defines.
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1172 */
19462
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1173 static gboolean
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1174 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
1175 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1176 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
1177 "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
1178 "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
1179 "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
1180 "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
1181 "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
1182 "uid", MSIM_TYPE_INTEGER, session->userid,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1183 "rid", MSIM_TYPE_INTEGER,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1184 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
1185 "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
1186 NULL);
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1187 }
105305518622 On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19442
diff changeset
1188
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1189 /** Called after username is set, if necessary and we're open for business. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1190 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
1191 {
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
1192 MsimMessage *body;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1193
24770
512c7c31eb21 Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents: 24768
diff changeset
1194 /* Set display name to username (otherwise will show email address) */
512c7c31eb21 Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents: 24768
diff changeset
1195 purple_connection_set_display_name(session->gc, session->username);
512c7c31eb21 Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents: 24768
diff changeset
1196
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1197 body = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1198 "UserID", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1199 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1200
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1201 /* Request IM info about ourself. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1202 msim_send(session,
24779
e5f8d9ba84db I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
1203 "persist", MSIM_TYPE_INTEGER, 1,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1204 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24780
d7fad2c0cf7c Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents: 24779
diff changeset
1205 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1206 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1207 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1208 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
24780
d7fad2c0cf7c Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents: 24779
diff changeset
1209 "UserID", MSIM_TYPE_INTEGER, session->userid,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1210 "body", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1211 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1212
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1213 /* Request MySpace info about ourself. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1214 msim_send(session,
24779
e5f8d9ba84db I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
1215 "persist", MSIM_TYPE_INTEGER, 1,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1216 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24780
d7fad2c0cf7c Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents: 24779
diff changeset
1217 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1218 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1219 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1220 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1221 "body", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1222 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1223
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1224 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1225 /* TODO: set blocklist */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1226
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1227 /* Notify servers of our current status. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1228 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1229 msim_set_status(session->account,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1230 purple_account_get_active_status(session->account));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1231
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1232 /* TODO: setinfo */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1233 /*
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1234 body = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1235 "TotalFriends", MSIM_TYPE_INTEGER, 666,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1236 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1237 msim_send(session,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1238 "setinfo", MSIM_TYPE_BOOLEAN, TRUE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1239 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1240 "info", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1241 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1242 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1243
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1244 /* Disable due to problems with timeouts. TODO: fix. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1245 #ifdef MSIM_USE_KEEPALIVE
25576
7f552614ec8a applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents: 25538
diff changeset
1246 purple_timeout_add_seconds(MSIM_KEEPALIVE_INTERVAL_CHECK,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1247 (GSourceFunc)msim_check_alive, session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1248 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1249
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1250 /* Check mail if they want to. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1251 if (purple_account_get_check_mail(session->account)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1252 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1253 (GSourceFunc)msim_check_inbox, session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1254 msim_check_inbox(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1255 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1256
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1257 msim_get_contact_list(session, MSIM_CONTACT_LIST_INITIAL_FRIENDS);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1258
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1259 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1260 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1261
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1262 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1263 * Record the client version in the buddy list, from an incoming message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1264 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1265 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1266 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1267 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1268 gchar *username, *cv;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1269 gboolean ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1270 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1271
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1272 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1273 cv = msim_msg_get_string(msg, "cv");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1274
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1275 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1276 if (!cv) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1277 /* No client version to record, don't worry about it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1278 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1279 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1280 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1281
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1282 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1283
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1284 if (user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1285 user->client_cv = atol(cv);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1286 ret = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1287 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1288 ret = FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1289 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1290
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1291 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1292 g_free(cv);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1293
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1294 return ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1295 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1296
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1297 #ifdef MSIM_SEND_CLIENT_VERSION
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1298 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1299 * Send our client version to another unofficial client that understands it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1300 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1301 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1302 msim_send_unofficial_client(MsimSession *session, gchar *username)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1303 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1304 gchar *our_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1305 gboolean ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1306
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1307 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1308 PURPLE_MAJOR_VERSION,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1309 PURPLE_MINOR_VERSION,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1310 PURPLE_MICRO_VERSION,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1311 MSIM_PRPL_VERSION_STRING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1312
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1313 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1314
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1315 return ret;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1316 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1317 #endif
27904
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1318 /**
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1319 * Process incoming status mood messages.
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1320 *
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1321 * @param session
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1322 * @param msg Status mood update message. Caller frees.
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1323 *
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1324 * @return TRUE if successful.
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1325 */
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1326 static gboolean
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1327 msim_incoming_status_mood(MsimSession *session, MsimMessage *msg) {
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1328 /* TODO: I dont know too much about this yet,
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1329 * so until I see how the official client handles
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1330 * this and decide if libpurple should as well,
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1331 * well just say we used it
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1332 */
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1333 gchar *ss;
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1334 ss = msim_msg_get_string(msg, "msg");
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1335 purple_debug_info("msim", "Incoming Status Message: %s", ss ? ss : "(NULL)");
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1336 g_free(ss);
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1337 return TRUE;
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1338 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1339
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1340 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1341 * Process incoming status messages.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1342 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1343 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1344 * @param msg Status update message. Caller frees.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1345 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1346 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1347 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1348 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1349 msim_incoming_status(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1350 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1351 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1352 GList *list;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1353 gchar *status_headline, *status_headline_escaped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1354 gint status_code, purple_status_code;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1355 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1356 gchar *unrecognized_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1357
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1358 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1359
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1360 /* Helpfully looked up by msim_incoming_resolve() for us. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1361 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1362 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1363
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1364 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1365 gchar *ss;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1366
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1367 ss = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1368 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1369 "msim_status: updating status for <%s> to <%s>\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1370 username, ss ? ss : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1371 g_free(ss);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1372 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1373
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1374 /* Example fields:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1375 * |s|0|ss|Offline
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1376 * |s|1|ss|:-)|ls||ip|0|p|0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1377 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1378 list = msim_msg_get_list(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1379
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1380 status_code = msim_msg_get_integer_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1381 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1382 status_headline = msim_msg_get_string_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1383
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1384 /* Add buddy if not found.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1385 * TODO: Could this be responsible for #3444? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1386 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1387 if (!user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1388 PurpleBuddy *buddy;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1389
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1390 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1391 "msim_status: making new buddy for %s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1392 buddy = purple_buddy_new(session->account, username, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1393 purple_blist_add_buddy(buddy, NULL, NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1394
25237
401f548e3544 propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
parents: 25172 24805
diff changeset
1395 user = msim_get_user_from_buddy(buddy, TRUE);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1396 user->id = msim_msg_get_integer(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1397
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1398 /* Keep track of the user ID across sessions */
25883
e22bc87b758b explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
parents: 24767 25882
diff changeset
1399 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1400
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1401 msim_store_user_info(session, msg, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1402 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1403 purple_debug_info("msim", "msim_status: found buddy %s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1404 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1405
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1406 if (status_headline && strcmp(status_headline, "") != 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1407 /* The status headline is plaintext, but libpurple treats it as HTML,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1408 * so escape any HTML characters to their entity equivalents. */
24805
22fd7467f0cc Fix a few small memleaks
Mark Doliner <mark@kingant.net>
parents: 24803
diff changeset
1409 status_headline_escaped = g_markup_escape_text(status_headline, -1);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1410 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1411 status_headline_escaped = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1412 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1413
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1414 g_free(status_headline);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1415
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1416 /* don't copy; let the MsimUser own the headline, memory-wise */
24805
22fd7467f0cc Fix a few small memleaks
Mark Doliner <mark@kingant.net>
parents: 24803
diff changeset
1417 g_free(user->headline);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1418 user->headline = status_headline_escaped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1419
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1420 /* Set user status */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1421 switch (status_code) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1422 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1423 purple_status_code = PURPLE_STATUS_OFFLINE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1424 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1425
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1426 case MSIM_STATUS_CODE_ONLINE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1427 purple_status_code = PURPLE_STATUS_AVAILABLE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1428 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1429
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1430 case MSIM_STATUS_CODE_AWAY:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1431 purple_status_code = PURPLE_STATUS_AWAY;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1432 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1433
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1434 case MSIM_STATUS_CODE_IDLE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1435 /* Treat idle as an available status. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1436 purple_status_code = PURPLE_STATUS_AVAILABLE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1437 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1438
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1439 default:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1440 purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1441 username, status_code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1442 purple_status_code = PURPLE_STATUS_AVAILABLE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1443
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1444 unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1445 status_code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1446 msim_unrecognized(session, NULL, unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1447 g_free(unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1448 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1449
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1450 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1451
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1452 if (status_code == MSIM_STATUS_CODE_IDLE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1453 purple_debug_info("msim", "msim_status: got idle: %s\n", username);
24798
a8643ca8d2e0 Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents: 24796
diff changeset
1454 purple_prpl_got_user_idle(session->account, username, TRUE, 0);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1455 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1456 /* All other statuses indicate going back to non-idle. */
24798
a8643ca8d2e0 Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents: 24796
diff changeset
1457 purple_prpl_got_user_idle(session->account, username, FALSE, 0);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1458 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1459
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1460 #ifdef MSIM_SEND_CLIENT_VERSION
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1461 if (status_code == MSIM_STATUS_CODE_ONLINE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1462 /* Secretly whisper to unofficial clients our own version as they come online */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1463 msim_send_unofficial_client(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1464 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1465 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1466
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1467 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1468 /* Get information when they come online.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1469 * TODO: periodically refresh?
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1470 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1471 purple_debug_info("msim_incoming_status", "%s came online, looking up\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1472 msim_lookup_user(session, username, NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1473 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1474
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1475 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1476 msim_msg_list_free(list);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1477
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1478 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1479 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1480
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1481 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1482 * Handle an incoming instant message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1483 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1484 * @param session The session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1485 * @param msg Message from the server, containing 'f' (userid from) and 'msg'.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1486 * Should also contain username in _username from preprocessing.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1487 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1488 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1489 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1490 static gboolean
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1491 msim_incoming_im(MsimSession *session, MsimMessage *msg, const gchar *username)
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1492 {
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1493 gchar *msg_msim_markup, *msg_purple_markup;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1494 gchar *userid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1495 time_t time_received;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1496 PurpleConversation *conv;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1497
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1498 /* I know this isn't really a string... but we need it to be one for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1499 * purple_find_conversation_with_account(). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1500 userid = msim_msg_get_string(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1501
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1502 purple_debug_info("msim_incoming_im", "UserID is %s", userid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1503
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1504 if (msim_is_userid(username)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1505 purple_debug_info("msim", "Ignoring message from spambot (%s) on account %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1506 username, purple_account_get_username(session->account));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1507 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1508 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1509
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1510 /* See if a conversation with their UID already exists...*/
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1511 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, userid, session->account);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1512 if (conv) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1513 /* Since the conversation exists... We need to normalize it */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1514 purple_conversation_set_name(conv, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1515 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1516
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1517 msg_msim_markup = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1518 g_return_val_if_fail(msg_msim_markup != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1519
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1520 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1521 g_free(msg_msim_markup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1522
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1523 time_received = msim_msg_get_integer(msg, "date");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1524 if (!time_received) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1525 purple_debug_info("msim_incoming_im", "date in message not set.\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1526 time_received = time(NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1527 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1528
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1529 serv_got_im(session->gc, username, msg_purple_markup, PURPLE_MESSAGE_RECV, time_received);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1530
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1531 g_free(msg_purple_markup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1532
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1533 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1534 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1535
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1536 /**
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1537 * Handle an incoming action message or an IM.
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1538 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1539 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1540 * @param msg
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1541 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1542 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1543 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1544 static gboolean
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1545 msim_incoming_action_or_im(MsimSession *session, MsimMessage *msg)
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1546 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1547 gchar *msg_text, *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1548 gboolean rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1549
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1550 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1551
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1552 msg_text = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1553 g_return_val_if_fail(msg_text != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1554
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1555 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1556 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1557
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1558 purple_debug_info("msim",
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1559 "msim_incoming_action_or_im: action <%s> from <%s>\n",
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1560 msg_text, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1561
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1562 if (g_str_equal(msg_text, "%typing%")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1563 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1564 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1565 } else if (g_str_equal(msg_text, "%stoptyping%")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1566 serv_got_typing_stopped(session->gc, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1567 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1568 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1569 rc = msim_incoming_zap(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1570 } else if (strstr(msg_text, "!!!GroupCount=")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1571 /* TODO: support group chats. I think the number in msg_text has
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1572 * something to do with the 'gid' field. */
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1573 purple_debug_info("msim",
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1574 "msim_incoming_action_or_im: "
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1575 "TODO: implement #4691, group chats: %s\n", msg_text);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1576
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1577 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1578 } else if (strstr(msg_text, "!!!Offline=")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1579 /* TODO: support group chats. This one might mean a user
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1580 * went offline or exited the chat. */
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1581 purple_debug_info("msim", "msim_incoming_action_or_im: "
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1582 "TODO: implement #4691, group chats: %s\n", msg_text);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1583
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1584 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1585 } else if (msim_msg_get_integer(msg, "aid") != 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1586 purple_debug_info("msim", "TODO: implement #4691, group chat from %d on %d: %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1587 msim_msg_get_integer(msg, "aid"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1588 msim_msg_get_integer(msg, "f"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1589 msg_text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1590
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1591 rc = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1592 } else {
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1593 rc = msim_incoming_im(session, msg, username);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1594 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1595
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1596 g_free(msg_text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1597 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1598
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1599 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1600 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1601
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1602 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1603 * Process an incoming media (message background?) message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1604 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1605 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1606 msim_incoming_media(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1607 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1608 gchar *username, *text;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1609
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1610 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1611 text = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1612
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1613 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1614 g_return_val_if_fail(text != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1615
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1616 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1617
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1618 /* Media messages are sent when the user opens a window to someone.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1619 * Tell libpurple they started typing and stopped typing, to inform the Psychic
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1620 * Mode plugin so it too can open a window to the user. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1621 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1622 serv_got_typing_stopped(session->gc, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1623
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1624 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1625
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1626 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1627 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1628
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1629 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1630 * Process an incoming "unofficial client" message. The plugin for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1631 * Miranda IM sends this message with the plugin information.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1632 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1633 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1634 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1635 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1636 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1637 gchar *username, *client_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1638
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1639 username = msim_msg_get_string(msg, "_username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1640 client_info = msim_msg_get_string(msg, "msg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1641
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1642 g_return_val_if_fail(username != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1643 g_return_val_if_fail(client_info != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1644
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1645 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1646 username, client_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1647
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1648 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1649
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1650 g_return_val_if_fail(user != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1651
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1652 if (user->client_info) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1653 g_free(user->client_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1654 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1655 user->client_info = client_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1656
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1657 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1658 /* Do not free client_info - the MsimUser now owns it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1659
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1660 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1661 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1662
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1663 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1664 * Handle an incoming buddy message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1665 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1666 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1667 msim_incoming_bm(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1668 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1669 guint bm;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1670
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1671 bm = msim_msg_get_integer(msg, "bm");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1672
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1673 msim_incoming_bm_record_cv(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1674
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1675 switch (bm) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1676 case MSIM_BM_STATUS:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1677 return msim_incoming_status(session, msg);
27154
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27137
diff changeset
1678 case MSIM_BM_ACTION_OR_IM_DELAYABLE:
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27137
diff changeset
1679 case MSIM_BM_ACTION_OR_IM_INSTANT:
27027
fdc0035bea5a Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents: 27018
diff changeset
1680 return msim_incoming_action_or_im(session, msg);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1681 case MSIM_BM_MEDIA:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1682 return msim_incoming_media(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1683 case MSIM_BM_UNOFFICIAL_CLIENT:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1684 return msim_incoming_unofficial_client(session, msg);
27904
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1685 case MSIM_BM_STATUS_MOOD:
e4b0bf56667f Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents: 27888
diff changeset
1686 return msim_incoming_status_mood(session, msg);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1687 default:
27888
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1688 /*
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1689 * Unknown message type! We used to call
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1690 * msim_incoming_action_or_im(session, msg);
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1691 * for these, but that doesn't help anything, and it means
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1692 * we'll show broken gibberish if MySpace starts sending us
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1693 * other message types.
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1694 */
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1695 purple_debug_warning("myspace", "Received unknown imcoming "
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1696 "message, bm=%u\n", bm);
b59aa0c36b2b Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents: 27381
diff changeset
1697 return TRUE;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1698 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1699 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1700
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1701 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1702 * Process the initial server information from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1703 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1704 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1705 msim_process_server_info(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1706 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1707 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1708
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1709 body = msim_msg_get_dictionary(msg, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1710 g_return_val_if_fail(body != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1711
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1712 /* Example body:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1713 AdUnitRefreshInterval=10.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1714 AlertPollInterval=360.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1715 AllowChatRoomEmoticonSharing=False.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1716 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1717 CurClientVersion=673.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1718 EnableIMBrowse=True.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1719 EnableIMStuffAvatars=False.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1720 EnableIMStuffZaps=False.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1721 MaxAddAllFriends=100.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1722 MaxContacts=1000.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1723 MinClientVersion=594.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1724 MySpaceIM_ENGLISH=78744676.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1725 MySpaceNowTimer=720.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1726 PersistenceDataTimeout=900.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1727 UseWebChallenge=1.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1728 WebTicketGoHome=False
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1729
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1730 Anything useful? TODO: use what is useful, and use it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1731 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1732 purple_debug_info("msim_process_server_info",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1733 "maximum contacts: %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1734 msim_msg_get_integer(body, "MaxContacts"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1735
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1736 session->server_info = body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1737 /* session->server_info freed in msim_session_destroy */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1738
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1739 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1740 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1741
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1742 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1743 * Process a web challenge, used to login to the web site.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1744 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1745 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1746 msim_web_challenge(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1747 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1748 /* TODO: web challenge, store token. #2659. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1749 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1750 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1751
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1752 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1753 * Process a persistance message reply from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1754 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1755 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1756 * @param msg Message reply from server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1757 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1758 * @return TRUE if successful.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1759 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1760 * msim_lookup_user sets callback for here
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1761 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1762 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1763 msim_process_reply(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1764 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1765 MSIM_USER_LOOKUP_CB cb;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1766 gpointer data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1767 guint rid, cmd, dsn, lid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1768
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1769 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1770
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1771 msim_store_user_info(session, msg, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1772
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1773 rid = msim_msg_get_integer(msg, "rid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1774 cmd = msim_msg_get_integer(msg, "cmd");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1775 dsn = msim_msg_get_integer(msg, "dsn");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1776 lid = msim_msg_get_integer(msg, "lid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1777
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1778 /* Unsolicited messages */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1779 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1780 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1781 return msim_process_server_info(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1782 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1783 return msim_web_challenge(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1784 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1785 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1786
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1787 /* If a callback is registered for this userid lookup, call it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1788 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1789 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1790
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1791 if (cb) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1792 purple_debug_info("msim", "msim_process_reply: calling callback now\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1793 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
1794 cb(session, msg, data);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1795 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1796 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1797 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1798 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1799 "msim_process_reply: no callback for rid %d\n", rid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1800 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1801
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1802 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1803 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1804
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1805 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1806 * Handle an error from the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1807 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1808 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1809 * @param msg The message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1810 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1811 * @return TRUE if successfully reported error.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1812 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1813 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1814 msim_error(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1815 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1816 gchar *errmsg, *full_errmsg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1817 guint err;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1818
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1819 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1820
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1821 err = msim_msg_get_integer(msg, "err");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1822 errmsg = msim_msg_get_string(msg, "errmsg");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1823
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1824 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1825 errmsg ? errmsg : "no 'errmsg' given");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1826
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1827 g_free(errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1828
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1829 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1830 session->sesskey, full_errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1831
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1832 /* Destroy session if fatal. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1833 if (msim_msg_get(msg, "fatal")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1834 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1835 purple_debug_info("msim", "fatal error, closing\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1836
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1837 switch (err) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1838 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1839 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1840 if (!purple_account_get_remember_password(session->account))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1841 purple_account_set_password(session->account, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1842 #ifdef MSIM_MAX_PASSWORD_LENGTH
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1843 if (session->account->password && (strlen(session->account->password) > MSIM_MAX_PASSWORD_LENGTH)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1844 gchar *suggestion;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1845
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1846 suggestion = g_strdup_printf(_("%s Your password is "
27127
c4f0e47c7bed Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents: 27027
diff changeset
1847 "%zu characters, which is longer than the "
c4f0e47c7bed Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents: 27027
diff changeset
1848 "maximum length of %d. Please shorten your "
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1849 "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."),
27127
c4f0e47c7bed Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents: 27027
diff changeset
1850 full_errmsg,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1851 strlen(session->account->password),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1852 MSIM_MAX_PASSWORD_LENGTH);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1853
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1854 /* Replace full_errmsg. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1855 g_free(full_errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1856 full_errmsg = suggestion;
27128
0a8129263401 Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents: 27127
diff changeset
1857 } else {
0a8129263401 Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents: 27127
diff changeset
1858 g_free(full_errmsg);
0a8129263401 Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents: 27127
diff changeset
1859 full_errmsg = g_strdup(_("Incorrect username or password"));
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1860 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1861 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1862 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1863 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1864 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1865 if (!purple_account_get_remember_password(session->account))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1866 purple_account_set_password(session->account, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1867 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1868 }
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
1869 purple_connection_error_reason(session->gc, reason, full_errmsg);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1870 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1871 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1872 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1873
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1874 g_free(full_errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1875
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1876 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1877 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1878
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1879 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1880 * Process a message.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1881 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1882 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1883 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1884 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1885 * @return TRUE if successful. FALSE if processing failed.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1886 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1887 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1888 msim_process(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1889 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1890 g_return_val_if_fail(session != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1891 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1892
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1893 if (msim_msg_get_integer(msg, "lc") == 1) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1894 return msim_login_challenge(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1895 } else if (msim_msg_get_integer(msg, "lc") == 2) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1896 /* return msim_we_are_logged_on(session, msg); */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1897 if (msim_is_username_set(session, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1898 return msim_we_are_logged_on(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1899 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1900 /* No username is set... We'll wait for the callbacks to do their work */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1901 /* When they're all done, the last one will call msim_we_are_logged_on() and pick up where we left off */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1902 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1903 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1904 } else if (msim_msg_get(msg, "bm")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1905 return msim_incoming_bm(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1906 } else if (msim_msg_get(msg, "rid")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1907 return msim_process_reply(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1908 } else if (msim_msg_get(msg, "error")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1909 return msim_error(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1910 } else if (msim_msg_get(msg, "ka")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1911 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1912 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1913 msim_unrecognized(session, msg, "in msim_process");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1914 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1915 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1916 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1917
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1918 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1919 * After a uid is resolved to username, tag it with the username and submit for processing.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1920 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1921 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1922 * @param userinfo Response messsage to resolving request.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1923 * @param data MsimMessage *, the message to attach information to.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1924 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1925 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
1926 msim_incoming_resolved(MsimSession *session, const MsimMessage *userinfo,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1927 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1928 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1929 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1930 MsimMessage *msg, *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1931
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1932 g_return_if_fail(userinfo != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1933
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1934 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
1935 g_return_if_fail(body != NULL);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1936
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1937 username = msim_msg_get_string(body, "UserName");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1938 g_return_if_fail(username != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1939 /* Note: username will be owned by 'msg' below. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1940
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1941 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1942 g_return_if_fail(msg != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1943
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1944 /* TODO: more elegant solution than below. attach whole message? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1945 /* Special elements name beginning with '_', we'll use internally within the
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1946 * program (did not come directly from the wire). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1947 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, username); /* This makes 'msg' the owner of 'username' */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1948
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1949 /* TODO: attach more useful information, like ImageURL */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1950
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1951 msim_process(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1952
24885
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24805
diff changeset
1953 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
1954 msim_msg_free(body);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1955 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1956
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1957 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1958 * Preprocess incoming messages, resolving as needed, calling
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1959 * msim_process() when ready to process.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1960 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1961 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1962 * @param msg MsimMessage *, freed by caller.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1963 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1964 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1965 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1966 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1967 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1968
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1969 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1970 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1971 const gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1972
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1973 /* 'f' = userid message is from, in buddy messages */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1974 uid = msim_msg_get_integer(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1975
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1976 username = msim_uid2username_from_blist(session->account, uid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1977
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1978 if (username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1979 /* Know username already, use it. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1980 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1981 username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1982 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1983 return msim_process(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1984
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1985 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1986 gchar *from;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1987
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1988 /* Send lookup request. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1989 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1990 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1991 from = msim_msg_get_string(msg, "f");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1992 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1993 g_free(from);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1994
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1995 /* indeterminate */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1996 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1997 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1998 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
1999 /* Nothing to resolve - send directly to processing. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2000 return msim_process(session, msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2001 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2002 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2003
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2004 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2005 * Callback when input available.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2006 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2007 * @param gc_uncasted A PurpleConnection pointer.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2008 * @param source File descriptor.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2009 * @param cond PURPLE_INPUT_READ
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2010 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2011 * Reads the input, and calls msim_preprocess_incoming() to handle it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2012 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2013 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2014 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2015 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2016 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2017 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2018 gchar *end;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2019 int n;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2020
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2021 g_return_if_fail(gc_uncasted != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2022 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2023
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2024 gc = (PurpleConnection *)(gc_uncasted);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2025 session = gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2026
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2027 /* libpurple/eventloop.h only defines these two */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2028 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2029 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2030 purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2031 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2032 _("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
2033 return;
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2034 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2035
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2036 g_return_if_fail(cond == PURPLE_INPUT_READ);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2037
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2038 /* Mark down that we got data, so we don't timeout. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2039 session->last_comm = time(NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2040
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2041 /* If approaching end of buffer, reallocate some more memory. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2042 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2043 purple_debug_info("msim",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2044 "msim_input_cb: %d-byte read buffer full, rxoff=%d, " "growing by %d bytes\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2045 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2046 session->rxsize += MSIM_READ_BUF_SIZE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2047 session->rxbuf = g_realloc(session->rxbuf, session->rxsize);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2048
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2049 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2050 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2051
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2052 purple_debug_info("msim", "dynamic buffer at %d (max %d), reading up to %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2053 session->rxoff, session->rxsize,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2054 MSIM_READ_BUF_SIZE - session->rxoff - 1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2055
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2056 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2057 * the file descriptor, but it sometimes differs from the 'source' parameter.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2058 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2059 n = recv(session->fd,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2060 session->rxbuf + session->rxoff,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2061 session->rxsize - session->rxoff - 1, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2062
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2063 if (n < 0) {
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2064 gchar *tmp;
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2065
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2066 if (errno == EAGAIN)
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2067 /* No worries */
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2068 return;
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2069
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2070 tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2071 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2072 purple_connection_error_reason(gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2073 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2074 g_free(tmp);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2075 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2076 } else if (n == 0) {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2077 purple_connection_error_reason(gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2078 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2079 _("Server closed the connection"));
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2080 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2081 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2082
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2083 /* Null terminate */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2084 purple_debug_info("msim", "msim_input_cb: going to null terminate "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2085 "at n=%d\n", n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2086 session->rxbuf[session->rxoff + n] = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2087
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2088 #ifdef MSIM_CHECK_EMBEDDED_NULLS
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2089 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2090 if (strlen(session->rxbuf + session->rxoff) != n) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2091 /* Occurs after login, but it is not a null byte. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2092 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2093 "--null byte encountered?\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2094 strlen(session->rxbuf + session->rxoff), n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2095 /*purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2096 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2097 "Invalid message - null byte on input"); */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2098 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2099 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2100 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2101
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2102 session->rxoff += n;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2103 purple_debug_info("msim", "msim_input_cb: read=%d\n", n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2104
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2105 #ifdef MSIM_DEBUG_RXBUF
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2106 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2107 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2108
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2109 /* Look for \\final\\ end markers. If found, process message. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2110 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2111 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2112
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2113 #ifdef MSIM_DEBUG_RXBUF
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2114 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2115 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2116 *end = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2117 msg = msim_parse(session->rxbuf);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2118 if (!msg) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2119 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2120 purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2121 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2122 _("Unable to parse message"));
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2123 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2124 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2125 /* Process message and then free it (processing function should
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2126 * clone message if it wants to keep it afterwards.) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2127 if (!msim_preprocess_incoming(session, msg)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2128 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2129 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2130 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2131 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2132
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2133 /* Move remaining part of buffer to beginning. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2134 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2135 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2136 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2137
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2138 /* Clear end of buffer
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2139 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2140 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2141 }
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2142 }
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2143
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2144 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2145 * Callback when connected. Sets up input handlers.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2146 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2147 * @param data A PurpleConnection pointer.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2148 * @param source File descriptor.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2149 * @param error_message
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2150 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2151 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2152 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
2153 {
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2154 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
2155 MsimSession *session;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2156
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2157 g_return_if_fail(data != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2158
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2159 gc = (PurpleConnection *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2160 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2161
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2162 if (source < 0) {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2163 gchar *tmp = g_strdup_printf(_("Unable to connect: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2164 error_message);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2165 purple_connection_error_reason (gc,
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2166 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2167 g_free(tmp);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2168 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2169 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2170
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2171 session->fd = source;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2172
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2173 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2174 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2175
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2176 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2177 * Start logging in to the MSIM servers.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2178 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2179 * @param acct Account information to use to login.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2180 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2181 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2182 msim_login(PurpleAccount *acct)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2183 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2184 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2185 const gchar *host;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2186 int port;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2187
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2188 g_return_if_fail(acct != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2189 g_return_if_fail(acct->username != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2190
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2191 purple_debug_info("msim", "logging in %s\n", acct->username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2192
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2193 gc = purple_account_get_connection(acct);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2194 gc->proto_data = msim_session_new(acct);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2195 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2196
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2197 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2198 * Lets wipe out our local list of blocked buddies. We'll get a
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2199 * list of all blocked buddies from the server, and we shouldn't
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2200 * have stuff in the local list that isn't on the server list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2201 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2202 while (acct->deny != NULL)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2203 purple_privacy_deny_remove(acct, acct->deny->data, TRUE);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2204
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2205 /* 1. connect to server */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2206 purple_connection_update_progress(gc, _("Connecting"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2207 0, /* which connection step this is */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2208 4); /* total number of steps */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2209
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2210 host = purple_account_get_string(acct, "server", MSIM_SERVER);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2211 port = purple_account_get_int(acct, "port", MSIM_PORT);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2212
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2213 /* From purple.sf.net/api:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2214 * """Note that this function name can be misleading--although it is called
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2215 * "proxy connect," it is used for establishing any outgoing TCP connection,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2216 * whether through a proxy or not.""" */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2217
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2218 /* Calls msim_connect_cb when connected. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2219 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2220 /* TODO: try other ports if in auto mode, then save
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2221 * working port and try that first next time. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2222 purple_connection_error_reason (gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2223 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27380
diff changeset
2224 _("Unable to connect"));
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2225 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2226 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2227 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2228
28975
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2229 static void
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2230 msim_buddy_free(PurpleBuddy *buddy)
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2231 {
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2232 msim_user_free(purple_buddy_get_protocol_data(buddy));
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2233 purple_buddy_set_protocol_data(buddy, NULL);
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2234 }
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2235
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2236 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2237 * Close the connection.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2238 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2239 * @param gc The connection.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2240 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2241 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2242 msim_close(PurpleConnection *gc)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2243 {
28975
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2244 GSList *buddies;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2245 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2246
28979
3e99c4eab63b Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents: 28977
diff changeset
2247 if (gc == NULL) {
3e99c4eab63b Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents: 28977
diff changeset
2248 return;
3e99c4eab63b Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents: 28977
diff changeset
2249 }
3e99c4eab63b Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents: 28977
diff changeset
2250
28975
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2251 /*
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2252 * Free our protocol-specific buddy data. It almost seems like libpurple
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2253 * should call our buddy_free prpl callback so that we don't need to do
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2254 * this... but it doesn't, so we do.
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2255 */
28980
1386a0e22ac7 Paul Aurich helped me make this cleaner, because he's such a good person!
Mark Doliner <mark@kingant.net>
parents: 28979
diff changeset
2256 buddies = purple_find_buddies(purple_connection_get_account(gc), NULL);
28975
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2257 while (buddies != NULL) {
28980
1386a0e22ac7 Paul Aurich helped me make this cleaner, because he's such a good person!
Mark Doliner <mark@kingant.net>
parents: 28979
diff changeset
2258 msim_buddy_free(buddies->data);
28975
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2259 buddies = g_slist_delete_link(buddies, buddies);
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2260 }
52fffd4cdd62 Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents: 28889
diff changeset
2261
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2262 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2263 if (session == NULL)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2264 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2265
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2266 gc->proto_data = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2267
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2268 if (session->gc->inpa) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2269 purple_input_remove(session->gc->inpa);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2270 }
24802
075d700fdc75 Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents: 24798
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: 24798
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: 24798
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: 24798
diff changeset
2274 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2275
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2276 msim_session_destroy(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2277 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2278
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2279 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
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: 24764
diff changeset
2281 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2282 * @param gc Connection.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
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: 24764
diff changeset
2284 * @param message Instant message text to send.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2285 * @param flags Flags.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2286 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2287 * @return 1 if successful or postponed, -1 if failed
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2288 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2289 * Allows sending to a user by username, email address, or userid. If
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
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: 24764
diff changeset
2291 * This function does that by calling msim_postprocess_outgoing().
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2292 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2293 static int
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
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: 24764
diff changeset
2295 PurpleMessageFlags flags)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2296 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2297 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2298 gchar *message_msim;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2299 int rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2300
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2301 g_return_val_if_fail(gc != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2302 g_return_val_if_fail(who != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2303 g_return_val_if_fail(message != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2304
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2305 /* 'flags' has many options, not used here. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2306
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2307 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2308
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2309 message_msim = html_to_msim_markup(session, message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2310
27154
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27137
diff changeset
2311 if (msim_send_bm(session, who, message_msim, MSIM_BM_ACTION_OR_IM_DELAYABLE)) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2312 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2313 * return 1 even if the message could not be sent, since I don't know if
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2314 * it has failed yet--because the IM is only sent after the userid is
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2315 * retrieved from the server (which happens after this function returns).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2316 * If an error does occur, it should be logged to the IM window.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2317 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2318 rc = 1;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2319 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2320 rc = -1;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2321 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2322
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2323 g_free(message_msim);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2324
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2325 return rc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2326 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2327
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2328 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2329 * Handle when our user starts or stops typing to another user.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2330 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2331 * @param gc
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2332 * @param name The buddy name to which our user is typing to
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2333 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2334 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2335 * @return 0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2336 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2337 static unsigned int
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2338 msim_send_typing(PurpleConnection *gc, const gchar *name,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2339 PurpleTypingState state)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2340 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2341 const gchar *typing_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2342 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2343
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2344 g_return_val_if_fail(gc != NULL, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2345 g_return_val_if_fail(name != NULL, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2346
19249
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2347 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
2348
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2349 switch (state) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2350 case PURPLE_TYPING:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2351 typing_str = "%typing%";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2352 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2353
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2354 case PURPLE_TYPED:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2355 case PURPLE_NOT_TYPING:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2356 default:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2357 typing_str = "%stoptyping%";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2358 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2359 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2360
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2361 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str);
27154
5fbcfcbd6551 Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents: 27137
diff changeset
2362 msim_send_bm(session, name, typing_str, MSIM_BM_ACTION_OR_IM_INSTANT);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2363 return 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2364 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2365
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2366 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2367 * Callback for msim_get_info(), for when user info is received.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2368 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2369 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
2370 msim_get_info_cb(MsimSession *session, const MsimMessage *user_info_msg,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2371 gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2372 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2373 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2374 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2375 PurpleNotifyUserInfo *user_info;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2376 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2377
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2378 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2379 orthogonality. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2380 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2381 g_return_if_fail(msg != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2382
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2383 username = msim_msg_get_string(msg, "user");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2384 if (!username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2385 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2386 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2387 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2388
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2389 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2390 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2391
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2392 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2393
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2394 if (!user) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2395 /* User isn't on blist, create a temporary user to store info. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2396 user = g_new0(MsimUser, 1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2397 user->temporary_user = TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2398 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2399
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2400 /* Update user structure with new information */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2401 msim_store_user_info(session, user_info_msg, user);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2402
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2403 user_info = purple_notify_user_info_new();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2404
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2405 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2406 msim_append_user_info(session, user_info, user, TRUE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2407
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2408 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2409 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2410
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2411 purple_notify_user_info_destroy(user_info);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2412
28889
5a367a023195 Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <mark@kingant.net>
parents: 27904
diff changeset
2413 if (user->temporary_user)
5a367a023195 Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <mark@kingant.net>
parents: 27904
diff changeset
2414 msim_user_free(user);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2415 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2416 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2417
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2418 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2419 * Retrieve a user's profile.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2420 * @param username Username, user ID, or email address to lookup.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2421 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2422 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2423 msim_get_info(PurpleConnection *gc, const gchar *username)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2424 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2425 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2426 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2427 gchar *user_to_lookup;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2428 MsimMessage *user_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2429
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2430 g_return_if_fail(gc != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2431 g_return_if_fail(username != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2432
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2433 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2434
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2435 /* Obtain uid of buddy. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2436 user = msim_find_user(session, username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2437
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2438 /* If is on buddy list, lookup by uid since it is faster. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2439 if (user && user->id) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2440 user_to_lookup = g_strdup_printf("%d", user->id);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2441 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2442 /* Looking up buddy not on blist. Lookup by whatever user entered. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2443 user_to_lookup = g_strdup(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2444 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2445
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2446 /* Pass the username to msim_get_info_cb(), because since we lookup
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2447 * by userid, the userinfo message will only contain the uid (not
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2448 * the username) but it would be useful to display the username too.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2449 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2450 user_msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2451 "user", MSIM_TYPE_STRING, g_strdup(username),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2452 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2453 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2454
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2455 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2456
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2457 g_free(user_to_lookup);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2458 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2459
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2460 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2461 * Set status using an MSIM_STATUS_CODE_* value.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2462 * @param status_code An MSIM_STATUS_CODE_* value.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2463 * @param statstring Status string, must be a dynamic string (will be freed by msim_send).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2464 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2465 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2466 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2467 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2468 g_return_if_fail(statstring != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2469
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2470 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2471 status_code, statstring);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2472
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2473 if (!msim_send(session,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2474 "status", MSIM_TYPE_INTEGER, status_code,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2475 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2476 "statstring", MSIM_TYPE_STRING, statstring,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2477 "locstring", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2478 NULL))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2479 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2480 purple_debug_info("msim", "msim_set_status: failed to set status\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2481 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2482 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2483
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2484 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2485 * Set your status - callback for when user manually sets it.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2486 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2487 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2488 msim_set_status(PurpleAccount *account, PurpleStatus *status)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2489 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2490 PurpleStatusType *type;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2491 PurplePresence *pres;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2492 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2493 guint status_code;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2494 const gchar *message;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2495 gchar *stripped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2496 gchar *unrecognized_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2497
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2498 session = (MsimSession *)account->gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2499
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2500 type = purple_status_get_type(status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2501 pres = purple_status_get_presence(status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2502
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2503 switch (purple_status_type_get_primitive(type)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2504 case PURPLE_STATUS_AVAILABLE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2505 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2506 MSIM_STATUS_CODE_ONLINE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2507 status_code = MSIM_STATUS_CODE_ONLINE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2508 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2509
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2510 case PURPLE_STATUS_INVISIBLE:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2511 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2512 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2513 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2514 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2515
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2516 case PURPLE_STATUS_AWAY:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2517 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2518 MSIM_STATUS_CODE_AWAY);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2519 status_code = MSIM_STATUS_CODE_AWAY;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2520 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2521
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2522 default:
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2523 purple_debug_info("msim", "msim_set_status: unknown "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2524 "status interpreting as online");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2525 status_code = MSIM_STATUS_CODE_ONLINE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2526
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2527 unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2528 purple_status_type_get_primitive(type));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2529 msim_unrecognized(session, NULL, unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2530 g_free(unrecognized_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2531
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2532 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2533 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2534
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2535 message = purple_status_get_attr_string(status, "message");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2536
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2537 /* Status strings are plain text. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2538 if (message != NULL)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2539 stripped = purple_markup_strip_html(message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2540 else
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2541 stripped = g_strdup("");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2542
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2543 msim_set_status_code(session, status_code, stripped);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2544
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2545 /* If we should be idle, set that status. Time is irrelevant here. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2546 if (purple_presence_is_idle(pres) && status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2547 msim_set_idle(account->gc, 1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2548 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2549
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2550 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2551 * Go idle.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2552 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2553 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2554 msim_set_idle(PurpleConnection *gc, int time)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2555 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2556 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2557 PurpleStatus *status;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2558
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2559 g_return_if_fail(gc != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2560
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2561 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2562
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2563 status = purple_account_get_active_status(session->account);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2564
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2565 if (time == 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2566 /* Going back from idle. In msim, idle is mutually exclusive
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2567 * from the other states (you can only be away or idle, but not
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2568 * both, for example), so by going non-idle I go back to what
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2569 * libpurple says I should be.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2570 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2571 msim_set_status(session->account, status);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2572 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2573 const gchar *message;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2574 gchar *stripped;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2575
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2576 /* Set the idle message to the status message from the real
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2577 * current status.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2578 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2579 message = purple_status_get_attr_string(status, "message");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2580 if (message != NULL)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2581 stripped = purple_markup_strip_html(message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2582 else
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2583 stripped = g_strdup("");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2584
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2585 /* msim doesn't support idle time, so just go idle */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2586 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2587 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2588 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2589
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2590 /**
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2591 * @return TRUE if everything was ok, FALSE if something went awry.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2592 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2593 static gboolean
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2594 msim_update_blocklist_for_buddy(MsimSession *session, const char *name, gboolean allow, gboolean block)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2595 {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2596 MsimMessage *msg;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2597 GList *list;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2598
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2599 list = NULL;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2600 list = g_list_prepend(list, allow ? "a+" : "a-");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2601 list = g_list_prepend(list, "<uid>");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2602 list = g_list_prepend(list, block ? "b+" : "b-");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2603 list = g_list_prepend(list, "<uid>");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2604 list = g_list_reverse(list);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2605
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2606 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2607 "blocklist", MSIM_TYPE_BOOLEAN, TRUE,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2608 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2609 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2610 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2611 "idlist", MSIM_TYPE_LIST, list,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2612 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2613
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2614 if (!msim_postprocess_outgoing(session, msg, name, "idlist", NULL)) {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2615 purple_debug_error("myspace",
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2616 "blocklist command failed for %s, allow=%d, block=%d\n",
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2617 name, allow, block);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2618 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2619 return FALSE;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2620 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2621
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2622 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2623
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2624 return TRUE;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2625 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2626
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2627 /**
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2628 * Add a buddy to user's buddy list.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2629 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2630 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2631 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2632 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2633 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2634 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2635 MsimMessage *msg_persist;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2636 MsimMessage *body;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2637 const char *name, *gname;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2638
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2639 session = (MsimSession *)gc->proto_data;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2640 name = purple_buddy_get_name(buddy);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2641 gname = group ? purple_group_get_name(group) : NULL;
25172
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24464
diff changeset
2642
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24464
diff changeset
2643 if (msim_get_user_from_buddy(buddy, FALSE) != NULL)
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24464
diff changeset
2644 return;
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24464
diff changeset
2645
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2646 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n",
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2647 name, gname ? gname : "(no group)");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2648
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2649 msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2650 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2651 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2652 /* "newprofileid" will be inserted here with uid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2653 "reason", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2654 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2655
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2656 if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2657 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2658 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2659 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2660 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2661 msim_msg_free(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2662
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2663 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2664 * buddy list since Purple adds it locally. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2665
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2666 body = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2667 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2668 "GroupName", MSIM_TYPE_STRING, g_strdup(gname),
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2669 "Position", MSIM_TYPE_INTEGER, 1000,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2670 "Visibility", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2671 "NickName", MSIM_TYPE_STRING, g_strdup(""),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2672 "NameSelect", MSIM_TYPE_INTEGER, 0,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2673 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2674
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2675 /* TODO: Update blocklist. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2676
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2677 msg_persist = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2678 "persist", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2679 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2680 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2681 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2682 "uid", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2683 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2684 /* TODO: Use msim_new_reply_callback to get rid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2685 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2686 "body", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2687 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2688
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2689 if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL))
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2690 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2691 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2692 msim_msg_free(msg_persist);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2693 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2694 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2695 msim_msg_free(msg_persist);
24783
75ecd41a64ba Fix a bug where if "Show our presence only to people on our buddy list"
Mark Doliner <mark@kingant.net>
parents: 24782
diff changeset
2696
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2697 /* Add to allow list, remove from block list */
25887
47540809ae91 explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
parents: 24803 25886
diff changeset
2698 msim_update_blocklist_for_buddy(session, name, TRUE, FALSE);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2699 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2700
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2701 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2702 * Remove a buddy from the user's buddy list.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2703 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2704 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2705 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2706 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2707 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2708 MsimMessage *delbuddy_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2709 MsimMessage *persist_msg;
25886
a4a17fe80160 explicit merge of 'f7807039eeef499a403d638cbcb94060a1d33eea'
Richard Laager <rlaager@wiktel.com>
parents: 25885 24783
diff changeset
2710 const char *name;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2711
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2712 session = (MsimSession *)gc->proto_data;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2713 name = purple_buddy_get_name(buddy);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2714
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2715 delbuddy_msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2716 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2717 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2718 /* 'delprofileid' with uid will be inserted here. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2719 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2720
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2721 if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2722 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2723 msim_msg_free(delbuddy_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2724 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2725 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2726 msim_msg_free(delbuddy_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2727
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2728 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
2729 "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
2730 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2731 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2732 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2733 "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
2734 "uid", MSIM_TYPE_INTEGER, session->userid,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2735 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2736 /* <uid> will be replaced by postprocessing */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2737 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2738 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2739
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23332
diff changeset
2740 if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2741 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2742 msim_msg_free(persist_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2743 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2744 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2745 msim_msg_free(persist_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2746
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2747 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2748 * Remove from our approve list and from our block list (this
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2749 * doesn't seem like it would be necessary, but the official client
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2750 * does it)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2751 */
25892
b5df6cd20d8b Compile!
Richard Laager <rlaager@wiktel.com>
parents: 25891
diff changeset
2752 if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) {
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2753 purple_notify_error(NULL, NULL,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2754 _("Failed to remove buddy"), _("blocklist command failed"));
24885
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24805
diff changeset
2755 return;
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24805
diff changeset
2756 }
25891
c0b42d6c2785 propagate from branch 'im.pidgin.pidgin' (head f018e11a7ea08e07f22667e6daca2ec7e64f9710)
Richard Laager <rlaager@wiktel.com>
parents: 25888 24885
diff changeset
2757 msim_buddy_free(buddy);
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2758 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2759
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2760 /**
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2761 * Remove a buddy from the user's buddy list and add them to the block list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2762 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2763 static void
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2764 msim_add_deny(PurpleConnection *gc, const char *name)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2765 {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2766 MsimSession *session;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2767 MsimMessage *msg, *body;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2768
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2769 session = (MsimSession *)gc->proto_data;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2770
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2771 /* Remove from buddy list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2772 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2773 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2774 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2775 /* 'delprofileid' with uid will be inserted here. */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2776 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2777 if (!msim_postprocess_outgoing(session, msg, name, "delprofileid", NULL))
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2778 purple_debug_error("myspace", "delbuddy command failed\n");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2779 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2780
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2781 /* Remove from our approve list and add to our block list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2782 msim_update_blocklist_for_buddy(session, name, FALSE, TRUE);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2783
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2784 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2785 * Add the buddy to our list of blocked contacts, so we know they
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2786 * are blocked if we log in with another client
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2787 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2788 body = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2789 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2790 "Visibility", MSIM_TYPE_INTEGER, 2,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2791 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2792 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2793 "persist", MSIM_TYPE_INTEGER, 1,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2794 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2795 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2796 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2797 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2798 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2799 "body", MSIM_TYPE_DICTIONARY, body,
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2800 NULL);
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2801 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL))
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2802 purple_debug_error("myspace", "add to block list command failed\n");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2803 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2804
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2805 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2806 * TODO: MySpace doesn't allow blocked buddies on our buddy list,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2807 * do they? If not then we need to remove the buddy from
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2808 * libpurple's buddy list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2809 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2810 }
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2811
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2812 /**
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2813 * Remove a buddy from the user's block list.
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2814 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2815 static void
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2816 msim_rem_deny(PurpleConnection *gc, const char *name)
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2817 {
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2818 MsimSession *session;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2819 MsimMessage *msg, *body;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2820
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2821 session = (MsimSession *)gc->proto_data;
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2822
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2823 /*
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2824 * Remove from our list of blocked contacts, so we know they
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2825 * are no longer blocked if we log in with another client
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2826 */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2827 body = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2828 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2829 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2830 msg = msim_msg_new(
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2831 "persist", MSIM_TYPE_INTEGER, 1,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2832 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2833 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2834 "dsn", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_DSN,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2835 "lid", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_LID,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2836 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2837 "body", MSIM_TYPE_DICTIONARY, body,
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2838 NULL);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2839 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL))
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2840 purple_debug_error("myspace", "remove from block list command failed\n");
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2841 msim_msg_free(msg);
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2842
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2843 /* Remove from our approve list and our block list */
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
2844 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
2845 }
9d921dde9d9f First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19247
diff changeset
2846
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2847 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2848 * Returns a string of a username in canonical form. Basically removes all the
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2849 * spaces, lowercases the string, and looks up user IDs to usernames.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2850 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2851 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2852 * Borrowed this code from oscar_normalize. Added checking for
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2853 * "if userid, get name before normalizing"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2854 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2855 static const char *msim_normalize(const PurpleAccount *account, const char *str) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2856 static char normalized[BUF_LEN];
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2857 char *tmp1, *tmp2;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2858 int i, j;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2859 guint id;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2860
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2861 g_return_val_if_fail(str != NULL, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2862
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2863 if (msim_is_userid(str)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2864 /* Have user ID, we need to get their username first :) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2865 const char *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2866
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2867 /* If the account does not exist, we can't look up the user. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2868 if (!account || !account->gc)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2869 return str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2870
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2871 id = atol(str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2872 username = msim_uid2username_from_blist((PurpleAccount *)account, id);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2873 if (!username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2874 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2875 /* Note: manual lookup using msim_lookup_user() is a problem inside
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2876 * msim_normalize(), because msim_lookup_user() calls a callback function
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2877 * when the user information has been looked up, but msim_normalize() expects
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2878 * the result immediately. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2879 strncpy(normalized, str, BUF_LEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2880 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2881 strncpy(normalized, username, BUF_LEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2882 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2883 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2884 /* Have username. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2885 strncpy(normalized, str, BUF_LEN);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2886 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2887
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2888 /* Strip spaces. */
24922
cead8692e35f Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24885
diff changeset
2889 for (i=0, j=0; normalized[j]; j++) {
cead8692e35f Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24885
diff changeset
2890 if (normalized[j] != ' ')
cead8692e35f Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24885
diff changeset
2891 normalized[i++] = normalized[j];
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2892 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2893 normalized[i] = '\0';
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2894
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2895 /* Lowercase and perform UTF-8 normalization. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2896 tmp1 = g_utf8_strdown(normalized, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2897 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2898 g_snprintf(normalized, sizeof(normalized), "%s", tmp2);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2899 g_free(tmp2);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2900 g_free(tmp1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2901
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2902 /* TODO: re-add caps and spacing back to what the user wanted.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2903 * User can format their own names, for example 'msimprpl' is shown
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2904 * as 'MsIm PrPl' in the official client.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2905 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2906 * TODO: file a ticket to add this enhancement.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2907 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2908
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2909 return normalized;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2910 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2911
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2912 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2913 * Return whether the buddy can be messaged while offline.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2914 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2915 * The protocol supports offline messages in just the same way as online
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2916 * messages.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2917 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2918 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2919 msim_offline_message(const PurpleBuddy *buddy)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
2920 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2921 return TRUE;
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
2922 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
2923
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2924 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2925 * Send raw data to the server, possibly with embedded NULs.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2926 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2927 * Used in prpl_info struct, so that plugins can have the most possible
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2928 * control of what is sent over the connection. Inside this prpl,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2929 * msim_send_raw() is used, since it sends NUL-terminated strings (easier).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2930 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2931 * @param gc PurpleConnection
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2932 * @param buf Buffer to send
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2933 * @param total_bytes Size of buffer to send
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2934 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2935 * @return Bytes successfully sent, or -1 on error.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2936 */
24778
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24771
diff changeset
2937 /*
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24771
diff changeset
2938 * TODO: This needs to do non-blocking writes and use a watcher to check
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24771
diff changeset
2939 * when the fd is available to be written to.
5f8e8b89b143 Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents: 24771
diff changeset
2940 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2941 static int
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2942 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2943 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2944 int total_bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2945 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2946
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2947 g_return_val_if_fail(gc != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2948 g_return_val_if_fail(buf != NULL, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2949 g_return_val_if_fail(total_bytes >= 0, -1);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2950
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2951 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2952
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2953 /* Loop until all data is sent, or a failure occurs. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2954 total_bytes_sent = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2955 do {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2956 int bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2957
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2958 bytes_sent = send(session->fd, buf + total_bytes_sent,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2959 total_bytes - total_bytes_sent, 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2960
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2961 if (bytes_sent < 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2962 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2963 buf, g_strerror(errno));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2964 return total_bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2965 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2966 total_bytes_sent += bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2967
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2968 } while(total_bytes_sent < total_bytes);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2969
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2970 return total_bytes_sent;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2971 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2972
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2973 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2974 * Send raw data (given as a NUL-terminated string) to the server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2975 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2976 * @param session
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2977 * @param msg The raw data to send, in a NUL-terminated string.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2978 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2979 * @return TRUE if succeeded, FALSE if not.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2980 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2981 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2982 gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2983 msim_send_raw(MsimSession *session, const gchar *msg)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2984 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2985 size_t len;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2986
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2987 g_return_val_if_fail(msg != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2988
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2989 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2990 len = strlen(msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2991
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2992 return msim_send_really_raw(session->gc, msg, len) == len;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2993 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2994
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2995 static GHashTable *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2996 msim_get_account_text_table(PurpleAccount *unused)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2997 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2998 GHashTable *table;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
2999
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3000 table = g_hash_table_new(g_str_hash, g_str_equal);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3001
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3002 g_hash_table_insert(table, "login_label", (gpointer)_("Email Address..."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3003
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3004 return table;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3005 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3006
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3007 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3008 * Callbacks called by Purple, to access this plugin.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3009 */
20057
27754fc4d72e static this.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19750
diff changeset
3010 static PurplePluginProtocolInfo prpl_info = {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3011 /* options */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3012 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
3013 | OPT_PROTO_MAIL_CHECK,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3014
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3015 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3016 NULL, /* user_splits */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3017 NULL, /* protocol_options */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3018 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3019 msim_list_icon, /* list_icon */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3020 NULL, /* list_emblems */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3021 msim_status_text, /* status_text */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3022 msim_tooltip_text, /* tooltip_text */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3023 msim_status_types, /* status_types */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3024 msim_blist_node_menu, /* blist_node_menu */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3025 NULL, /* chat_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3026 NULL, /* chat_info_defaults */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3027 msim_login, /* login */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3028 msim_close, /* close */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3029 msim_send_im, /* send_im */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3030 NULL, /* set_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3031 msim_send_typing, /* send_typing */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3032 msim_get_info, /* get_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3033 msim_set_status, /* set_status */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3034 msim_set_idle, /* set_idle */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3035 NULL, /* change_passwd */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3036 msim_add_buddy, /* add_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3037 NULL, /* add_buddies */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3038 msim_remove_buddy, /* remove_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3039 NULL, /* remove_buddies */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3040 NULL, /* add_permit */
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
3041 msim_add_deny, /* add_deny */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3042 NULL, /* rem_permit */
24785
5f93e67a8bd7 Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents: 24783
diff changeset
3043 msim_rem_deny, /* rem_deny */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3044 NULL, /* set_permit_deny */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3045 NULL, /* join_chat */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3046 NULL, /* reject chat invite */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3047 NULL, /* get_chat_name */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3048 NULL, /* chat_invite */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3049 NULL, /* chat_leave */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3050 NULL, /* chat_whisper */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3051 NULL, /* chat_send */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3052 NULL, /* keepalive */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3053 NULL, /* register_user */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3054 NULL, /* get_cb_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3055 NULL, /* get_cb_away */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3056 NULL, /* alias_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3057 NULL, /* group_buddy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3058 NULL, /* rename_group */
24885
c6cadb7bdcf7 A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24805
diff changeset
3059 msim_buddy_free, /* buddy_free */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3060 NULL, /* convo_closed */
22100
1226083ed7e2 Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21950
diff changeset
3061 msim_normalize, /* normalize */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3062 NULL, /* set_buddy_icon */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3063 NULL, /* remove_group */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3064 NULL, /* get_cb_real_name */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3065 NULL, /* set_chat_topic */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3066 NULL, /* find_blist_chat */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3067 NULL, /* roomlist_get_list */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3068 NULL, /* roomlist_cancel */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3069 NULL, /* roomlist_expand_category */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3070 NULL, /* can_receive_file */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3071 NULL, /* send_file */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3072 NULL, /* new_xfer */
19243
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3073 msim_offline_message, /* offline_message */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3074 NULL, /* whiteboard_prpl_ops */
19243
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3075 msim_send_really_raw, /* send_raw */
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3076 NULL, /* roomlist_room_serialize */
19713
eabc8a32b1e4 Fix up an apparently bad merge with the reserved fields here.
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
3077 NULL, /* unregister_user */
19243
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3078 msim_send_attention, /* send_attention */
a242e014ab8c Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19242
diff changeset
3079 msim_attention_types, /* attention_types */
24986
f0c2e27c7ae7 propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24978 24885
diff changeset
3080 sizeof(PurplePluginProtocolInfo), /* struct_size */
23110
bb41bdce8981 Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23109
diff changeset
3081 msim_get_account_text_table, /* get_account_text_table */
24986
f0c2e27c7ae7 propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24978 24885
diff changeset
3082 NULL, /* initiate_media */
29478
2cb6ea4420a0 Add a NULL for PurplePluginProtocolInfo::get_moods to all the plugins I build
Paul Aurich <paul@darkrain42.org>
parents: 28980
diff changeset
3083 NULL, /* get_media_caps */
29847
2a436e0ce977 Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <paul@darkrain42.org>
parents: 29682
diff changeset
3084 NULL, /* get_moods */
2a436e0ce977 Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <paul@darkrain42.org>
parents: 29682
diff changeset
3085 NULL, /* set_public_alias */
31397
7c33eaed54e5 Update PRPL structs with new fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31203
diff changeset
3086 NULL, /* get_public_alias */
7c33eaed54e5 Update PRPL structs with new fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31203
diff changeset
3087 NULL, /* add_buddy_with_invite */
7c33eaed54e5 Update PRPL structs with new fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31203
diff changeset
3088 NULL /* add_buddies_with_invite */
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3089 };
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3090
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3091 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3092 * Load the plugin.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3093 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3094 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3095 msim_load(PurplePlugin *plugin)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3096 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3097 /* If compiled to use RC4 from libpurple, check if it is really there. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3098 if (!purple_ciphers_find_cipher("rc4")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3099 purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3100 purple_notify_error(plugin, _("Missing Cipher"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3101 _("The RC4 cipher could not be found"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3102 _("Upgrade "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3103 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM "
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3104 "plugin will not be loaded."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3105 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3106 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3107 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3108 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3109
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3110 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3111 * Called when friends have been imported to buddy list on server.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3112 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3113 static void
24799
c044eb54b7ac Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24798
diff changeset
3114 msim_import_friends_cb(MsimSession *session, const MsimMessage *reply, gpointer user_data)
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3115 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3116 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3117 gchar *completed;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3118
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3119 /* Check if the friends were imported successfully. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3120 body = msim_msg_get_dictionary(reply, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3121 g_return_if_fail(body != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3122 completed = msim_msg_get_string(body, "Completed");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3123 msim_msg_free(body);
25538
27e6ab4ff554 This should fix a sporadic crash? The behavior before was clearly wrong--
Mark Doliner <mark@kingant.net>
parents: 25419
diff changeset
3124 g_return_if_fail(completed != NULL);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3125 if (!g_str_equal(completed, "True"))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3126 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3127 purple_debug_info("msim_import_friends_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3128 "failed to import friends: %s", completed);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3129 purple_notify_error(session->account, _("Add friends from MySpace.com"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3130 _("Importing friends failed"), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3131 g_free(completed);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3132 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3133 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3134 g_free(completed);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3135
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3136 purple_debug_info("msim_import_friends_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3137 "added friends to server-side buddy list, requesting new contacts from server");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3138
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3139 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3140
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3141 /* TODO: show, X friends have been added */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3142 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3143
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3144 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3145 * Import friends from myspace.com.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3146 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3147 static void msim_import_friends(PurplePluginAction *action)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3148 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3149 PurpleConnection *gc;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3150 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3151 gchar *group_name;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3152
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3153 gc = (PurpleConnection *)action->context;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3154 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3155
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3156 group_name = "MySpace Friends";
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3157
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3158 g_return_if_fail(msim_send(session,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3159 "persist", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3160 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3161 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3162 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3163 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3164 "uid", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3165 "rid", MSIM_TYPE_INTEGER,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3166 msim_new_reply_callback(session, msim_import_friends_cb, NULL),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3167 "body", MSIM_TYPE_STRING,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3168 g_strdup_printf("GroupName=%s", group_name),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3169 NULL));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3170 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3171
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3172 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3173 * Actions menu for account.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3174 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3175 static GList *
31529
79ae7200a11a Silence a swath of warnings regarding set-but-unused.
Paul Aurich <paul@darkrain42.org>
parents: 31397
diff changeset
3176 msim_actions(PurplePlugin *plugin, gpointer context /* PurpleConnection* */)
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3177 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3178 GList *menu;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3179 PurplePluginAction *act;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3180
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3181 menu = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3182
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3183 #if 0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3184 /* TODO: find out how */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3185 act = purple_plugin_action_new(_("Find people..."), msim_);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3186 menu = g_list_append(menu, act);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3187
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3188 act = purple_plugin_action_new(_("Change IM name..."), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3189 menu = g_list_append(menu, act);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3190 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3191
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3192 act = purple_plugin_action_new(_("Add friends from MySpace.com"), msim_import_friends);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3193 menu = g_list_append(menu, act);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3194
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3195 return menu;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3196 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3197
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3198 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3199 * Based on MSN's plugin info comments.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3200 */
19721
b2d213681176 Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <pidgin@unreliablesource.net>
parents: 19714
diff changeset
3201 static PurplePluginInfo info = {
23109
718a9c287839 Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23105
diff changeset
3202 PURPLE_PLUGIN_MAGIC,
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3203 PURPLE_MAJOR_VERSION,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3204 PURPLE_MINOR_VERSION,
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3205 PURPLE_PLUGIN_PROTOCOL, /**< type */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3206 NULL, /**< ui_requirement */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3207 0, /**< flags */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3208 NULL, /**< dependencies */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3209 PURPLE_PRIORITY_DEFAULT, /**< priority */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3210
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3211 "prpl-myspace", /**< id */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3212 "MySpaceIM", /**< name */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3213 MSIM_PRPL_VERSION_STRING, /**< version */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3214 /** summary */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3215 "MySpaceIM Protocol Plugin",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3216 /** description */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3217 "MySpaceIM Protocol Plugin",
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3218 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3219 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3220
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3221 msim_load, /**< load */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3222 NULL, /**< unload */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3223 NULL, /**< destroy */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3224 NULL, /**< ui_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3225 &prpl_info, /**< extra_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3226 NULL, /**< prefs_info */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3227 msim_actions, /**< msim_actions */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3228 NULL, /**< reserved1 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3229 NULL, /**< reserved2 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3230 NULL, /**< reserved3 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3231 NULL /**< reserved4 */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3232 };
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3233
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3234 #ifdef MSIM_SELF_TEST
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3235 /*
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3236 * Test functions.
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3237 * 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
3238 * 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
3239 * how msimprpl is architected.
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3240 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3241
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3242 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3243 * Test MsimMessage for basic functionality.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3244 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3245 static int
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3246 msim_test_msg(void)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3247 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3248 MsimMessage *msg, *msg_cloned, *msg2;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3249 GList *list;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3250 gchar *packed, *packed_expected, *packed_cloned;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3251 guint failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3252
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3253 failures = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3254
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3255 purple_debug_info("msim", "\n\nTesting MsimMessage\n");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3256 msg = msim_msg_new(NULL); /* Create a new, empty message. */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3257
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3258 /* 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
3259 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
3260 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
3261 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
3262 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
3263 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
3264 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
3265 msim_msg_dump("msg debug str=%s\n", msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3266 packed = msim_msg_pack(msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3267
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3268 purple_debug_info("msim", "msg packed=%s\n", packed);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3269
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3270 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1"
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3271 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\";
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3272
19428
1fa10842eb83 In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19427
diff changeset
3273 if (!g_str_equal(packed, packed_expected)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3274 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
3275 ++failures, packed, packed_expected);
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
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3278
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3279 msg_cloned = msim_msg_clone(msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3280 packed_cloned = msim_msg_pack(msg_cloned);
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 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
3283 if (!g_str_equal(packed, packed_cloned)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3284 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
3285 ++failures, packed_cloned, packed);
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
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3288 g_free(packed);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3289 g_free(packed_cloned);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3290 msim_msg_free(msg_cloned);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3291 msim_msg_free(msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3292
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3293 /* Try some of the more advanced functionality */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3294 list = NULL;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3295
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3296 list = g_list_prepend(list, "item3");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3297 list = g_list_prepend(list, "item2");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3298 list = g_list_prepend(list, "item1");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3299 list = g_list_prepend(list, "item0");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3300
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3301 msg = msim_msg_new(NULL);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3302 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
3303 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
3304 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
3305 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
3306 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list);
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 msim_msg_dump("msg with list=%s\n", msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3309 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
3310
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3311 msg2 = msim_msg_new(NULL);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3312 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
3313 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3314 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
3315 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
3316
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3317 msim_msg_free(msg2);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3318
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3319 return failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3320 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3321
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3322 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3323 * Test protocol-level escaping/unescaping.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3324 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3325 static int
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3326 msim_test_escaping(void)
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3327 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3328 guint failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3329 gchar *raw, *escaped, *unescaped, *expected;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3330
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3331 failures = 0;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3332
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3333 purple_debug_info("msim", "\n\nTesting escaping\n");
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3334
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3335 raw = "hello/world\\hello/world";
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 escaped = msim_escape(raw);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3338 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
3339 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
3340 if (!g_str_equal(escaped, expected)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3341 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
3342 ++failures, escaped, expected);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3343 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3344
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 unescaped = msim_unescape(escaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3347 g_free(escaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3348 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
3349 if (!g_str_equal(raw, unescaped)) {
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3350 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
3351 ++failures, raw, unescaped);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3352 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3353
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3354 return failures;
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3355 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3356
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3357 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3358 msim_test_all(void)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3359 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3360 guint failures;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3361
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3362 failures = 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3363 failures += msim_test_msg();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3364 failures += msim_test_escaping();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3365
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3366 if (failures) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3367 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3368 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3369 purple_debug_info("msim", "msim_test_all - all tests passed!\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3370 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3371 exit(0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3372 }
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3373 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3374
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3375 #ifdef MSIM_CHECK_NEWER_VERSION
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3376 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3377 * Callback for when a currentversion.txt has been downloaded.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3378 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3379 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3380 msim_check_newer_version_cb(PurpleUtilFetchUrlData *url_data,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3381 gpointer user_data,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3382 const gchar *url_text,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3383 gsize len,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3384 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
3385 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3386 GKeyFile *keyfile;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3387 GError *error;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3388 GString *data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3389 gchar *newest_filever;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3390
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3391 if (!url_text) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3392 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3393 "got error: %s\n", error_message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3394 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3395 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3396
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3397 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3398 "url_text=%s\n", url_text ? url_text : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3399
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3400 /* Prepend [group] so that GKeyFile can parse it (requires a group). */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3401 data = g_string_new(url_text);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3402 purple_debug_info("msim", "data=%s\n", data->str
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3403 ? data->str : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3404 data = g_string_prepend(data, "[group]\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3405
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3406 purple_debug_info("msim", "data=%s\n", data->str
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3407 ? data->str : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3408
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3409 /* url_text is variable=data\n...†*/
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3410
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3411 /* Check FILEVER, 1.0.716.0. 716 is build, MSIM_CLIENT_VERSION */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3412 /* New (english) version can be downloaded from SETUPURL+SETUPFILE */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3413
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3414 error = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3415 keyfile = g_key_file_new();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3416
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3417 /* Default list seperator is ;, but currentversion.txt doesn't have
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3418 * these, so set to an unused character to avoid parsing problems. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3419 g_key_file_set_list_separator(keyfile, '\0');
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3420
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3421 g_key_file_load_from_data(keyfile, data->str, data->len,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3422 G_KEY_FILE_NONE, &error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3423 g_string_free(data, TRUE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3424
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3425 if (error != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3426 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3427 "couldn't parse, error: %d %d %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3428 error->domain, error->code, error->message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3429 g_error_free(error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3430 return;
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3431 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3432
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3433 gchar **ks;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3434 guint n;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3435 ks = g_key_file_get_keys(keyfile, "group", &n, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3436 purple_debug_info("msim", "n=%d\n", n);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3437 guint i;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3438 for (i = 0; ks[i] != NULL; ++i)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3439 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3440 purple_debug_info("msim", "%d=%s\n", i, ks[i]);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3441 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3442
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3443 newest_filever = g_key_file_get_string(keyfile, "group",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3444 "FILEVER", &error);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3445
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3446 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3447 "newest filever: %s\n", newest_filever ?
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3448 newest_filever : "(NULL)");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3449 if (error != NULL) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3450 purple_debug_info("msim_check_newer_version_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3451 "error: %d %d %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3452 error->domain, error->code, error->message);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3453 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
3454 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3455
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3456 g_key_file_free(keyfile);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3457
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3458 exit(0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3459 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3460 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3461
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3462 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3463 Handle a myim:addContact command, after username has been looked up.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3464 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3465 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3466 msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3467 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3468 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3469 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3470
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3471 body = msim_msg_get_dictionary(userinfo, "body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3472 username = msim_msg_get_string(body, "UserName");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3473 msim_msg_free(body);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3474
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3475 if (!username) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3476 guint uid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3477
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3478 uid = msim_msg_get_integer(userinfo, "UserID");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3479 g_return_if_fail(uid != 0);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3480
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3481 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
3482 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3483
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3484 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3485
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3486 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
3487 }
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3488
19441
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3489 /* 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
3490 * 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
3491 * looked up if possible? */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3492
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3493 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3494 * Handle a myim:sendIM URI command, after username has been looked up.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3495 */
19441
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3496 static void
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3497 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
3498 {
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3499 PurpleConversation *conv;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3500 MsimMessage *body;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3501 gchar *username;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3502
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3503 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
3504 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
3505 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
3506
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3507 if (!username) {
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3508 guint uid;
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3509
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3510 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
3511 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
3512
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3513 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
3514 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3515
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3516
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3517 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
3518 if (!conv) {
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3519 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
3520 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
3521 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3522
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3523 /* 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
3524 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
3525
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3526 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
3527 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3528
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3529 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3530 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
3531 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3532 PurpleAccount *account;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3533 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3534 GList *l;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3535 gchar *uid_str, *cid_str;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3536 guint uid, cid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3537
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3538 if (g_ascii_strcasecmp(proto, "myim"))
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3539 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3540
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3541 /* Parameters are case-insensitive. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3542 uid_str = g_hash_table_lookup(params, "uid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3543 cid_str = g_hash_table_lookup(params, "cid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3544
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3545 uid = uid_str ? atol(uid_str) : 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3546 cid = cid_str ? atol(cid_str) : 0;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3547
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3548 /* Need a contact. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3549 g_return_val_if_fail(cid != 0, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3550
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3551 /* TODO: if auto=true, "Add all the people on this page to my IM List!", on
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3552 * http://collect.myspace.com/index.cfm?fuseaction=im.friendslist. Don't need a cid. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3553
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3554 /* Convert numeric contact ID back to a string. Needed for looking up. Don't just
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3555 * directly use cid directly from parameters, because it might not be numeric.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3556 * It is trivial to change this to allow cID to be a username, but that's not how
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3557 * the official MySpaceIM client works, so don't provide that functionality. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3558 cid_str = g_strdup_printf("%d", cid);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3559
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3560
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3561 /* Find our account with specified user id, or use first connected account if uid=0. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3562 account = NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3563 l = purple_accounts_get_all();
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3564 while (l) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3565 if (purple_account_is_connected(l->data) &&
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3566 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3567 account = l->data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3568 break;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3569 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3570 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
3571 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3572
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3573 if (!account) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3574 purple_notify_error(NULL, _("myim URL handler"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3575 _("No suitable MySpaceIM account could be found to open this myim URL."),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3576 _("Enable the proper MySpaceIM account and try again."));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3577 g_free(cid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3578 return FALSE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3579 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3580
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3581 session = (MsimSession *)account->gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3582 g_return_val_if_fail(session != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3583
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3584 /* Lookup userid to username. TODO: push this down, to IM sending/contact
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3585 * adding functions. */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3586
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3587 /* myim:sendIM?uID=USERID&cID=CONTACTID */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3588 if (!g_ascii_strcasecmp(cmd, "sendIM")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3589 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_sendIM_cb, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3590 g_free(cid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3591 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3592
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3593 /* myim:addContact?uID=USERID&cID=CONTACTID */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3594 } else if (!g_ascii_strcasecmp(cmd, "addContact")) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3595 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_addContact_cb, NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3596 g_free(cid_str);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3597 return TRUE;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3598 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3599
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3600 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
3601 }
bbb205c49228 For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19439
diff changeset
3602
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3603 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3604 * Initialize plugin.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3605 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3606 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3607 init_plugin(PurplePlugin *plugin)
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3608 {
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3609 #ifdef MSIM_SELF_TEST
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3610 msim_test_all();
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3611 exit(0);
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3612 #endif /* MSIM_SELF_TEST */
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3613
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3614 PurpleAccountOption *option;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3615 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
3616
19598
339c7c8c0e08 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19597
diff changeset
3617 #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
3618 /* 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
3619 * 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
3620 * 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
3621 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
3622 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
3623 "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
3624 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
3625 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
3626 #endif
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3627
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3628 /* 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
3629 * 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
3630 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
3631 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
3632
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3633 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
3634 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
3635
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3636 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3637 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
3638 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
3639
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3640 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
3641 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
3642 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3643
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3644 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS
19734
0844b0638f0b The 'Send Emoticons' preferences (which is only configurable if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined) defaults to TRUE when used, a reasonable default. The preference, if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined, should do the same.
Evan Schoenberg <evan.s@dreskin.net>
parents: 19721
diff changeset
3645 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
3646 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
3647 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3648
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3649 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3650 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
3651 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
3652
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3653 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
3654 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
3655 #endif
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3656
19436
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3657 /* Code below only runs once. Based on oscar.c's oscar_init(). */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24764
diff changeset
3658 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
3659 return;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3660
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3661 initialized = TRUE;
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3662
a62c9b9c4596 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 19435
diff changeset
3663 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
3664 PURPLE_CALLBACK(msim_uri_handler), NULL);
19242
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3665 }
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3666
f60192409e7f merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18918 18917
diff changeset
3667 PURPLE_INIT_PLUGIN(myspace, init_plugin, info);