Mercurial > pidgin.yaz
annotate libpurple/protocols/myspace/myspace.c @ 27109:fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
fixes #8846: people using web myspaceIM can't respond to pidgin myspaceIM
For some reason IMs send using the myspace web site are sent so that
they won't become offline messages if the other person is offline.
I'm not really sure why that decision was made.
So now we treat messages with bm 1 the same as messages with bm 121. This means
we have to combine the function that parses out typing notification with
the function that parses IMs. And we check for typing notifications by
looking for %typing%. Which means if someone sends the IM "%typing%" with
no markup then we'll interpret it as a typing notification. And there's
nothing we can do to differentiate between the two. I asked.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 04 Jun 2009 05:19:49 +0000 |
parents | 1d2b813faca7 |
children | c4f0e47c7bed |
rev | line source |
---|---|
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2 * MySpaceIM Protocol Plugin |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
4 * \author Jeff Connelly |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
5 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
6 * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im> |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
7 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
8 * Based on Purple's "C Plugin HOWTO" hello world example. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
9 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
10 * Code also drawn from mockprpl: |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
11 * http://snarfed.org/space/purple+mock+protocol+plugin |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
12 * Copyright (C) 2004-2007, Ryan Barrett <mockprpl@ryanb.org> |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
13 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
14 * and some constructs also based on existing Purple plugins, which are: |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
15 * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net> |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
16 * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu> |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
17 * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com> |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
18 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
19 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
20 * This program is free software; you can redistribute it and/or modify |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
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>
diff
changeset
|
22 * the Free Software Foundation; either version 2 of the License, or |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
23 * (at your option) any later version. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
24 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
25 * This program is distributed in the hope that it will be useful, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
28 * GNU General Public License for more details. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
29 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
30 * You should have received a copy of the GNU General Public License |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
31 * along with this program; if not, write to the Free Software |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19660
diff
changeset
|
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
33 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
34 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
35 #define PURPLE_PLUGIN |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
36 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
37 #include "myspace.h" |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
38 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
39 #include "privacy.h" |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
40 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
41 static void msim_set_status(PurpleAccount *account, PurpleStatus *status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
42 static void msim_set_idle(PurpleConnection *gc, int time); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
43 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
44 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
45 * Perform actual postprocessing on a message, adding userid as specified. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
46 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
47 * @param msg The message to postprocess. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
48 * @param uid_before Name of field where to insert new field before, or NULL for end. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
49 * @param uid_field_name Name of field to add uid to. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
50 * @param uid The userid to insert. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
51 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
52 * If the field named by uid_field_name already exists, then its string contents will |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
53 * be used for the field, except "<uid>" will be replaced by the userid. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
54 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
55 * If the field named by uid_field_name does not exist, it will be added before the |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
56 * field named by uid_before, as an integer, with the userid. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
57 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
58 * Does not handle sending, or scheduling userid lookup. For that, see msim_postprocess_outgoing(). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
59 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
60 static MsimMessage * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
61 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
62 const gchar *uid_field_name, guint uid) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
63 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
64 MsimMessageElement *elem; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
65 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
66 /* First, check - if the field already exists, replace <uid> within it */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
67 if ((elem = msim_msg_get(msg, uid_field_name)) != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
68 gchar *fmt_string; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
69 gchar *uid_str, *new_str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
70 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
71 /* Get the packed element, flattening it. This allows <uid> to be |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
72 * replaced within nested data structures, since the replacement is done |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
73 * on the linear, packed data, not on a complicated data structure. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
74 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
75 * For example, if the field was originally a dictionary or a list, you |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
76 * would have to iterate over all the items in it to see what needs to |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
77 * be replaced. But by packing it first, the <uid> marker is easily replaced |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
78 * just by a string replacement. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
79 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
80 fmt_string = msim_msg_pack_element_data(elem); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
81 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
82 uid_str = g_strdup_printf("%d", uid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
83 new_str = purple_strreplace(fmt_string, "<uid>", uid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
84 g_free(uid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
85 g_free(fmt_string); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
86 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
87 /* Free the old element data */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
88 msim_msg_free_element_data(elem->data); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
89 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
90 /* Replace it with our new data */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
91 elem->data = new_str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
92 elem->type = MSIM_TYPE_RAW; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
93 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
94 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
95 /* Otherwise, insert new field into outgoing message. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
96 msg = msim_msg_insert_before(msg, uid_before, uid_field_name, MSIM_TYPE_INTEGER, GUINT_TO_POINTER(uid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
97 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
98 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
99 return msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
100 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
101 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
102 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
103 * Callback for msim_postprocess_outgoing() to add a userid to a message, and send it (once receiving userid). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
104 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
105 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
106 * @param userinfo The user information reply message, containing the user ID |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
107 * @param data The message to postprocess and send. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
108 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
109 * The data message should contain these fields: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
110 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
111 * _uid_field_name: string, name of field to add with userid from userinfo message |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
112 * _uid_before: string, name of field before field to insert, or NULL for end |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
113 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
114 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
115 msim_postprocess_outgoing_cb(MsimSession *session, const MsimMessage *userinfo, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
116 gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
117 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
118 gchar *uid_field_name, *uid_before, *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
119 guint uid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
120 MsimMessage *msg, *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
121 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
122 msg = (MsimMessage *)data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
123 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
124 /* Obtain userid from userinfo message. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
125 body = msim_msg_get_dictionary(userinfo, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
126 g_return_if_fail(body != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
127 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
128 uid = msim_msg_get_integer(body, "UserID"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
129 msim_msg_free(body); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
130 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
131 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
132 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
133 if (!uid) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
134 gchar *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
135 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
136 msg = g_strdup_printf(_("No such user: %s"), username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
137 if (!purple_conv_present_error(username, session->account, msg)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
138 purple_notify_error(NULL, NULL, _("User lookup"), msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
139 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
140 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
141 g_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
142 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
143 /* TODO: free |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
144 * msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
145 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
146 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
147 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
148 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
149 uid_field_name = msim_msg_get_string(msg, "_uid_field_name"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
150 uid_before = msim_msg_get_string(msg, "_uid_before"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
151 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
152 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
153 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
154 /* Send */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
155 if (!msim_msg_send(session, msg)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
156 msim_msg_dump("msim_postprocess_outgoing_cb: sending failed for message: %s\n", msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
157 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
158 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
159 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
160 /* Free field names AFTER sending message, because MsimMessage does NOT copy |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
161 * field names - instead, treats them as static strings (which they usually are). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
162 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
163 g_free(uid_field_name); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
164 g_free(uid_before); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
165 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
166 /* TODO: free |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
167 * msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
168 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
169 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
170 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
171 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
172 * Postprocess and send a message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
173 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
174 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
175 * @param msg Message to postprocess. Will NOT be freed. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
176 * @param username Username to resolve. Assumed to be a static string (will not be freed or copied). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
177 * @param uid_field_name Name of new field to add, containing uid of username. Static string. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
178 * @param uid_before Name of existing field to insert username field before. Static string. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
179 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
180 * @return TRUE if successful. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
181 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
182 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
183 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
184 const gchar *username, const gchar *uid_field_name, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
185 const gchar *uid_before) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
186 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
187 PurpleBuddy *buddy; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
188 guint uid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
189 gboolean rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
190 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
191 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
192 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
193 /* Store information for msim_postprocess_outgoing_cb(). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
194 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
195 msg = msim_msg_append(msg, "_uid_field_name", MSIM_TYPE_STRING, g_strdup(uid_field_name)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
196 msg = msim_msg_append(msg, "_uid_before", MSIM_TYPE_STRING, g_strdup(uid_before)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
197 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
198 /* First, try the most obvious. If numeric userid is given, use that directly. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
199 if (msim_is_userid(username)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
200 uid = atol(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
201 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
202 /* Next, see if on buddy list and know uid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
203 buddy = purple_find_buddy(session->account, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
204 if (buddy) { |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
205 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID"); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
206 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
207 uid = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
208 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
209 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
210 if (!buddy || !uid) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
211 /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
212 purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
213 username ? username : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
214 msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
215 return TRUE; /* not sure of status yet - haven't sent! */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
216 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
217 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
218 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
219 /* Already have uid, postprocess and send msg immediately. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
220 purple_debug_info("msim", "msim_postprocess_outgoing: found username %s has uid %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
221 username ? username : "(NULL)", uid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
222 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
223 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
224 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
225 rc = msim_msg_send(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
226 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
227 /* TODO: free |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
228 * msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
229 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
230 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
231 return rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
232 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
233 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
234 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
235 * Send a buddy message of a given type. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
236 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
237 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
238 * @param who Username to send message to. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
239 * @param text Message text to send. Not freed; will be copied. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
240 * @param type A MSIM_BM_* constant. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
241 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
242 * @return TRUE if success, FALSE if fail. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
243 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
244 * Buddy messages ('bm') include instant messages, action messages, status messages, etc. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
245 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
246 gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
247 msim_send_bm(MsimSession *session, const gchar *who, const gchar *text, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
248 int type) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
249 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
250 gboolean rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
251 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
252 const gchar *from_username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
253 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
254 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
255 g_return_val_if_fail(who != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
256 g_return_val_if_fail(text != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
257 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
258 from_username = session->account->username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
259 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
260 g_return_val_if_fail(from_username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
261 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
262 purple_debug_info("msim", "sending %d message from %s to %s: %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
263 type, from_username, who, text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
264 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
265 msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
266 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
267 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
268 /* 't' will be inserted here */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
269 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
270 "msg", MSIM_TYPE_STRING, g_strdup(text), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
271 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
272 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
273 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
274 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
275 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
276 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
277 return rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
278 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
279 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
280 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
281 * Lookup a username by userid, from buddy list. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
282 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
283 * @param wanted_uid |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
284 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
285 * @return Username of wanted_uid, if on blist, or NULL. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
286 * This is a static string, so don't free it. Copy it if needed. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
287 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
288 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
289 static const gchar * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
290 msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
291 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
292 GSList *buddies, *cur; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
293 const gchar *ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
294 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
295 buddies = purple_find_buddies(account, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
296 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
297 if (!buddies) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
298 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
299 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
300 return NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
301 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
302 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
303 ret = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
304 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
305 for (cur = buddies; cur != NULL; cur = g_slist_next(cur)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
306 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
307 PurpleBuddy *buddy; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
308 guint uid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
309 const gchar *name; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
310 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
311 /* See finch/gnthistory.c */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
312 buddy = cur->data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
313 |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
314 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID"); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
315 name = purple_buddy_get_name(buddy); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
316 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
317 if (uid == wanted_uid) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
318 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
319 ret = name; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
320 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
321 } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
322 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
323 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
324 g_slist_free(buddies); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
325 return ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
326 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
327 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
328 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
329 * Setup a callback, to be called when a reply is received with the returned rid. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
330 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
331 * @param cb The callback, an MSIM_USER_LOOKUP_CB. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
332 * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
333 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
334 * @return The request/reply ID, used to link replies with requests, or -1. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
335 * Put the rid in your request, 'rid' field. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
336 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
337 * TODO: Make more generic and more specific: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
338 * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
339 * 2) data - make it an MsimMessage? |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
340 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
341 guint |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
342 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
343 gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
344 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
345 guint rid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
346 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
347 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
348 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
349 rid = session->next_rid++; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
350 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
351 g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
352 g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
353 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
354 return rid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
355 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
356 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
357 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
358 * Return the icon name for a buddy and account. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
359 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
360 * @param acct The account to find the icon for, or NULL for protocol icon. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
361 * @param buddy The buddy to find the icon for, or NULL for the account icon. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
362 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
363 * @return The base icon name string. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
364 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
365 static const gchar * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
366 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
367 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
368 /* Use a MySpace icon submitted by hbons at |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
369 * http://developer.pidgin.im/wiki/MySpaceIM. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
370 return "myspace"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
371 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
372 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
373 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
374 * Obtain the status text for a buddy. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
375 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
376 * @param buddy The buddy to obtain status text for. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
377 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
378 * @return Status text, or NULL if error. Caller g_free()'s. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
379 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
380 static char * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
381 msim_status_text(PurpleBuddy *buddy) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
382 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
383 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
384 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
385 const gchar *display_name, *headline; |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
386 PurpleAccount *account; |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
387 PurpleConnection *gc; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
388 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
389 g_return_val_if_fail(buddy != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
390 |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
391 user = msim_get_user_from_buddy(buddy, TRUE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
392 |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
393 account = purple_buddy_get_account(buddy); |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
394 gc = purple_account_get_connection(account); |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
395 session = (MsimSession *)gc->proto_data; |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
396 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
397 g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
398 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
399 display_name = headline = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
400 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
401 /* Retrieve display name and/or headline, depending on user preference. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
402 if (purple_account_get_bool(session->account, "show_headline", TRUE)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
403 headline = user->headline; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
404 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
405 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
406 if (purple_account_get_bool(session->account, "show_display_name", FALSE)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
407 display_name = user->display_name; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
408 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
409 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
410 /* Return appropriate combination of display name and/or headline, or neither. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
411 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
412 if (display_name && headline) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
413 return g_strconcat(display_name, " ", headline, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
414 } else if (display_name) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
415 return g_strdup(display_name); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
416 } else if (headline) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
417 return g_strdup(headline); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
418 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
419 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
420 return NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
421 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
422 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
423 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
424 * Obtain the tooltip text for a buddy. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
425 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
426 * @param buddy Buddy to obtain tooltip text on. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
427 * @param user_info Variable modified to have the tooltip text. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
428 * @param full TRUE if should obtain full tooltip text. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
429 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
430 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
431 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
432 gboolean full) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
433 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
434 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
435 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
436 g_return_if_fail(buddy != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
437 g_return_if_fail(user_info != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
438 |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
439 user = msim_get_user_from_buddy(buddy, TRUE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
440 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
441 if (PURPLE_BUDDY_IS_ONLINE(buddy)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
442 MsimSession *session; |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
443 PurpleAccount *account = purple_buddy_get_account(buddy); |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
444 PurpleConnection *gc = purple_account_get_connection(account); |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
445 |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
446 session = (MsimSession *)gc->proto_data; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
447 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
448 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
449 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
450 /* TODO: if (full), do something different? */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
451 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
452 /* TODO: request information? have to figure out how to do |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
453 * the asynchronous lookup like oscar does (tooltip shows |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
454 * 'retrieving...' if not yet available, then changes when it is). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
455 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
456 * Right now, only show what we have on hand. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
457 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
458 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
459 /* Show abbreviated user info. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
460 msim_append_user_info(session, user_info, user, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
461 } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
462 } |
22160 | 463 |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
464 /** |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
465 * Get possible user status types. Based on mockprpl. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
466 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
467 * @return GList of status types. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
468 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
469 static GList * |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
470 msim_status_types(PurpleAccount *acct) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
471 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
472 GList *types; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
473 PurpleStatusType *status; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
474 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
475 purple_debug_info("myspace", "returning status types\n"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
476 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
477 types = NULL; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
478 |
22160 | 479 /* Statuses are almost all the same. Define a macro to reduce code repetition. */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
480 #define _MSIM_ADD_NEW_STATUS(prim) status = \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
481 purple_status_type_new_with_attrs( \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
482 prim, /* PurpleStatusPrimitive */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
483 NULL, /* id - use default */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
484 NULL, /* name - use default */ \ |
24409
3a3d36791a47
I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents:
24349
diff
changeset
|
485 TRUE, /* saveable */ \ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
486 TRUE, /* user_settable */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
487 FALSE, /* not independent */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
488 \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
489 /* Attributes - each status can have a message. */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
490 "message", \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
491 _("Message"), \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
492 purple_value_new(PURPLE_TYPE_STRING), \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
493 NULL); \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
494 \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
495 \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
496 types = g_list_append(types, status) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
497 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
498 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
499 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
500 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
501 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
502 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
503 |
22264
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
504 /* Except tune status is different... */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
505 status = purple_status_type_new_with_attrs( |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
506 PURPLE_STATUS_TUNE, /* primitive */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
507 "tune", /* ID */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
508 NULL, /* name - use default */ |
24409
3a3d36791a47
I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents:
24349
diff
changeset
|
509 FALSE, /* saveable */ |
22264
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
510 TRUE, /* should be user_settable some day */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
511 TRUE, /* independent */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
512 |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
513 PURPLE_TUNE_ARTIST, _("Artist"), purple_value_new(PURPLE_TYPE_STRING), |
22266
fc31c35d8024
purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <stu@nosnilmot.com>
parents:
22264
diff
changeset
|
514 PURPLE_TUNE_TITLE, _("Title"), purple_value_new(PURPLE_TYPE_STRING), |
fc31c35d8024
purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <stu@nosnilmot.com>
parents:
22264
diff
changeset
|
515 NULL); |
22264
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
516 |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
517 types = g_list_append(types, status); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
518 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
519 return types; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
520 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
521 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
522 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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>
diff
changeset
|
524 * |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
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:
24728
diff
changeset
|
527 * @param password User's cleartext password. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
528 * @param response_len Will be written with response length. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
529 * |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
diff
changeset
|
531 * Must be g_free()'d when finished. NULL if error. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
532 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
533 static gchar * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
diff
changeset
|
535 const gchar *email, const gchar *password, guint *response_len) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
536 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
537 PurpleCipherContext *key_context; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
538 PurpleCipher *sha1; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
539 PurpleCipherContext *rc4; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
540 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
541 guchar hash_pw[HASH_SIZE]; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
542 guchar key[HASH_SIZE]; |
24883
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
543 gchar *password_truncated, *password_utf16le, *password_utf8_lc; |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
544 GString *data; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
545 guchar *data_out; |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
546 size_t data_out_len; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
547 gsize conv_bytes_read, conv_bytes_written; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
548 GError *conv_error; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
549 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
550 int i; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
551 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
552 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
553 g_return_val_if_fail(nonce != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
554 g_return_val_if_fail(email != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
555 g_return_val_if_fail(password != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
556 g_return_val_if_fail(response_len != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
557 |
24883
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
558 /* |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
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:
24853
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:
24853
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:
24853
diff
changeset
|
562 * truncate it. |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
563 */ |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
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:
24853
diff
changeset
|
565 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
566 /* Convert password to lowercase (required for passwords containing |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
567 * uppercase characters). MySpace passwords are lowercase, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
568 * see ticket #2066. */ |
24883
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
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:
24853
diff
changeset
|
570 g_free(password_truncated); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
571 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
572 /* Convert ASCII password to UTF16 little endian */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
diff
changeset
|
574 conv_error = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
diff
changeset
|
576 &conv_bytes_read, &conv_bytes_written, &conv_error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
577 g_free(password_utf8_lc); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
578 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
579 if (conv_error != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
580 purple_debug_error("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
581 "g_convert password UTF8->UTF16LE failed: %s", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
582 conv_error->message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
583 g_error_free(conv_error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
584 return NULL; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
585 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
586 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
587 /* Compute password hash */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
588 purple_cipher_digest_region("sha1", (guchar *)password_utf16le, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
589 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
590 g_free(password_utf16le); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
591 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
592 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
593 purple_debug_info("msim", "pwhash = "); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
594 for (i = 0; i < sizeof(hash_pw); i++) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
595 purple_debug_info("msim", "%.2x ", hash_pw[i]); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
596 purple_debug_info("msim", "\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
597 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
598 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
599 /* key = sha1(sha1(pw) + nonce2) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
600 sha1 = purple_ciphers_find_cipher("sha1"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
601 key_context = purple_cipher_context_new(sha1, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
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:
24728
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:
24728
diff
changeset
|
605 purple_cipher_context_destroy(key_context); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
606 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
607 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
608 purple_debug_info("msim", "key = "); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
609 for (i = 0; i < sizeof(key); i++) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
610 purple_debug_info("msim", "%.2x ", key[i]); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
611 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
612 purple_debug_info("msim", "\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
613 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
614 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
615 rc4 = purple_cipher_context_new_by_name("rc4", NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
616 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
diff
changeset
|
618 * but only first 0x10 used for the RC4 key. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
diff
changeset
|
620 purple_cipher_context_set_key(rc4, key); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
621 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
622 /* TODO: obtain IPs of network interfaces */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
623 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
624 /* rc4 encrypt: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
625 * nonce1+email+IP list */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
626 |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
627 data = g_string_new(NULL); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
628 g_string_append_len(data, nonce, NONCE_SIZE); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
629 g_string_append(data, email); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
630 g_string_append_len(data, MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
631 |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
632 data_out = g_new0(guchar, data->len); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
633 |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
634 purple_cipher_context_encrypt(rc4, (const guchar *)data->str, |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
635 data->len, data_out, &data_out_len); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
636 purple_cipher_context_destroy(rc4); |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
637 |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
638 if (data_out_len != data->len) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
639 purple_debug_info("msim", "msim_compute_login_response: " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
640 "data length mismatch: %" G_GSIZE_FORMAT " != %" |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
641 G_GSIZE_FORMAT "\n", data_out_len, data->len); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
642 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
643 |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
644 g_string_free(data, TRUE); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
645 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
646 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
647 purple_debug_info("msim", "response=<%s>\n", data_out); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
648 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
649 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
650 *response_len = data_out_len; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
651 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
652 return (gchar *)data_out; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
653 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
654 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
655 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
656 * Process a login challenge, sending a response. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
657 * |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
658 * @param session |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
659 * @param msg Login challenge message. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
660 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
661 * @return TRUE if successful, FALSE if not |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
662 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
663 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
664 msim_login_challenge(MsimSession *session, MsimMessage *msg) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
665 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
666 PurpleAccount *account; |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
667 gchar *response; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
668 guint response_len; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
669 gchar *nc; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
670 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
|
671 gboolean ret; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
672 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
673 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
674 g_return_val_if_fail(msg != NULL, FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
675 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
676 g_return_val_if_fail(msim_msg_get_binary(msg, "nc", &nc, &nc_len), FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
677 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
678 account = session->account; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
679 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
680 g_return_val_if_fail(account != NULL, FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
681 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
682 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
683 |
22475
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
684 purple_debug_info("msim", "nc is %" G_GSIZE_FORMAT |
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
685 " bytes, decoded\n", nc_len); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
686 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
687 if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) { |
22475
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
688 purple_debug_info("msim", "bad nc length: %" G_GSIZE_MODIFIER |
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
689 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH); |
21358 | 690 purple_connection_error_reason (session->gc, |
691 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
692 _("Unexpected challenge length from server")); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
693 return FALSE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
694 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
695 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
696 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
697 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
698 response_len = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
699 response = msim_compute_login_response(nc, account->username, account->password, &response_len); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
700 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
701 g_free(nc); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
702 |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
703 ret = msim_send(session, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
704 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
705 /* This is actually user's email address. */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
706 "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
|
707 /* GString will be freed in msim_msg_free() in msim_send(). */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
708 "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
709 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
710 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
711 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
712 "reconn", MSIM_TYPE_INTEGER, 0, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
713 "status", MSIM_TYPE_INTEGER, 100, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
714 "id", MSIM_TYPE_INTEGER, 1, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
715 NULL); |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
716 |
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
717 g_free(response); |
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
718 |
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
719 return ret; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
720 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
721 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
722 /** |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
723 * Process unrecognized information. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
724 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
725 * @param session |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
726 * @param msg An MsimMessage that was unrecognized, or NULL. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
727 * @param note Information on what was unrecognized, or NULL. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
728 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
729 void |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
730 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
731 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
732 /* TODO: Some more context, outwardly equivalent to a backtrace, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
733 * for helping figure out what this msg is for. What was going on? |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
734 * But not too much information so that a user |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
735 * posting this dump reveals confidential information. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
736 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
737 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
738 /* TODO: dump unknown msgs to file, so user can send them to me |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
739 * if they wish, to help add support for new messages (inspired |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
740 * by Alexandr Shutko, who maintains OSCAR protocol documentation). |
22156 | 741 * |
742 * Filed enhancement ticket for libpurple as #4688. | |
743 */ | |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
744 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
745 purple_debug_info("msim", "Unrecognized data on account for %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
746 (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
|
747 session->account->username : "(NULL)"); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
748 if (note) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
749 purple_debug_info("msim", "(Note: %s)\n", note); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
750 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
751 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
752 if (msg) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
753 msim_msg_dump("Unrecognized message dump: %s\n", msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
754 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
755 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
756 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
757 /** Called when the session key arrives to check whether the user |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
758 * has a username, and set one if desired. */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
759 static gboolean |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
760 msim_is_username_set(MsimSession *session, MsimMessage *msg) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
761 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
762 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
763 g_return_val_if_fail(msg != NULL, FALSE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
764 g_return_val_if_fail(session->gc != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
765 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
766 session->sesskey = msim_msg_get_integer(msg, "sesskey"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
767 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
768 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
769 /* What is proof? Used to be uid, but now is 52 base64'd bytes... */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
770 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
771 /* Comes with: proof,profileid,userid,uniquenick -- all same values |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
772 * some of the time, but can vary. This is our own user ID. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
773 session->userid = msim_msg_get_integer(msg, "userid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
774 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
775 /* Save uid to account so this account can be looked up by uid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
776 purple_account_set_int(session->account, "uid", session->userid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
777 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
778 /* Not sure what profileid is used for. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
779 if (msim_msg_get_integer(msg, "profileid") != session->userid) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
780 msim_unrecognized(session, msg, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
781 "Profile ID didn't match user ID, don't know why"); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
782 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
783 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
784 /* We now know are our own username, only after we're logged in.. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
785 * which is weird, but happens because you login with your email |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
786 * address and not username. Will be freed in msim_session_destroy(). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
787 session->username = msim_msg_get_string(msg, "uniquenick"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
788 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
789 /* If user lacks a username, help them get one. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
790 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
791 purple_debug_info("msim_is_username_set", "no username is set\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
792 purple_request_yes_no(session->gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
793 _("MySpaceIM - No Username Set"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
794 _("You appear to have no MySpace username."), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
795 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
796 0, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
797 session->account, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
798 NULL, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
799 NULL, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
800 session->gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
801 G_CALLBACK(msim_set_username_cb), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
802 G_CALLBACK(msim_do_not_set_username_cb)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
803 purple_debug_info("msim_is_username_set","'username not set' alert prompted\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
804 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
805 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
806 return TRUE; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
807 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
808 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
809 #ifdef MSIM_USE_KEEPALIVE |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
810 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
811 * Check if the connection is still alive, based on last communication. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
812 */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
813 static gboolean |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
814 msim_check_alive(gpointer data) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
815 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
816 MsimSession *session; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
817 time_t delta; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
818 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
819 session = (MsimSession *)data; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
820 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
821 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
822 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
823 delta = time(NULL) - session->last_comm; |
24630
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
824 |
22156 | 825 /* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
826 if (delta >= MSIM_KEEPALIVE_INTERVAL) { |
24630
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
827 purple_debug_info("msim", |
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
828 "msim_check_alive: %zu > interval of %d, presumed dead\n", |
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
829 delta, MSIM_KEEPALIVE_INTERVAL); |
22156 | 830 purple_connection_error_reason(session->gc, |
24630
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
831 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
832 _("Lost connection with server")); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
833 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
834 return FALSE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
835 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
836 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
837 return TRUE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
838 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
839 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
840 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
841 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
842 * Handle mail reply checks. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
843 */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
844 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
845 msim_check_inbox_cb(MsimSession *session, const MsimMessage *reply, gpointer data) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
846 { |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
847 MsimMessage *body; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
848 guint old_inbox_status; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
849 guint i, n; |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
850 /* Information for each new inbox message type. */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
851 static struct |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
852 { |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
853 const gchar *key; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
854 guint bit; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
855 const gchar *url; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
856 const gchar *text; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
857 } message_types[] = { |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
858 { "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
|
859 { "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
|
860 { "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
|
861 { "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
|
862 { "PictureComment", MSIM_INBOX_PICTURE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
863 }; |
26941
ef61a2b746bd
Qulogic pointed out that glib has G_N_ELEMENTS already
Ka-Hing Cheung <khc@hxbc.us>
parents:
26934
diff
changeset
|
864 const gchar *froms[G_N_ELEMENTS(message_types) + 1] = { "" }, |
ef61a2b746bd
Qulogic pointed out that glib has G_N_ELEMENTS already
Ka-Hing Cheung <khc@hxbc.us>
parents:
26934
diff
changeset
|
865 *tos[G_N_ELEMENTS(message_types) + 1] = { "" }, |
ef61a2b746bd
Qulogic pointed out that glib has G_N_ELEMENTS already
Ka-Hing Cheung <khc@hxbc.us>
parents:
26934
diff
changeset
|
866 *urls[G_N_ELEMENTS(message_types) + 1] = { "" }, |
ef61a2b746bd
Qulogic pointed out that glib has G_N_ELEMENTS already
Ka-Hing Cheung <khc@hxbc.us>
parents:
26934
diff
changeset
|
867 *subjects[G_N_ELEMENTS(message_types) + 1] = { "" }; |
26934
0b97f73fa3d2
correctly NULL terminate all the arrays since that's what gtknotify assumes,
Ka-Hing Cheung <khc@hxbc.us>
parents:
26612
diff
changeset
|
868 |
0b97f73fa3d2
correctly NULL terminate all the arrays since that's what gtknotify assumes,
Ka-Hing Cheung <khc@hxbc.us>
parents:
26612
diff
changeset
|
869 g_return_if_fail(reply != NULL); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
870 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
871 /* Can't write _()'d strings in array initializers. Workaround. */ |
26934
0b97f73fa3d2
correctly NULL terminate all the arrays since that's what gtknotify assumes,
Ka-Hing Cheung <khc@hxbc.us>
parents:
26612
diff
changeset
|
872 /* khc: then use N_() in the array initializer and use _() when they are |
0b97f73fa3d2
correctly NULL terminate all the arrays since that's what gtknotify assumes,
Ka-Hing Cheung <khc@hxbc.us>
parents:
26612
diff
changeset
|
873 used */ |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
874 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
|
875 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
|
876 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
|
877 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
|
878 message_types[4].text = _("New picture comments"); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
879 |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
880 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
|
881 |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
882 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
|
883 return; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
884 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
885 old_inbox_status = session->inbox_status; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
886 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
887 n = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
888 |
26941
ef61a2b746bd
Qulogic pointed out that glib has G_N_ELEMENTS already
Ka-Hing Cheung <khc@hxbc.us>
parents:
26934
diff
changeset
|
889 for (i = 0; i < G_N_ELEMENTS(message_types); ++i) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
890 const gchar *key; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
891 guint bit; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
892 |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
893 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
|
894 bit = message_types[i].bit; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
895 |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
896 if (msim_msg_get(body, key)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
897 /* Notify only on when _changes_ from no mail -> has mail |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
898 * (edge triggered) */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
899 if (!(session->inbox_status & bit)) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
900 purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
901 key ? key : "(NULL)", n); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
902 |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
903 subjects[n] = message_types[i].text; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
904 froms[n] = _("MySpace"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
905 tos[n] = session->username; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
906 /* TODO: append token, web challenge, so automatically logs in. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
907 * Would also need to free strings because they won't be static |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
908 */ |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
909 urls[n] = message_types[i].url; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
910 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
911 ++n; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
912 } else { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
913 purple_debug_info("msim", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
914 "msim_check_inbox_cb: already notified of %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
915 key ? key : "(NULL)"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
916 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
917 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
918 session->inbox_status |= bit; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
919 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
920 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
921 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
922 if (n) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
923 purple_debug_info("msim", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
924 "msim_check_inbox_cb: notifying of %d\n", n); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
925 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
926 /* TODO: free strings with callback _if_ change to dynamic (w/ token) */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
927 purple_notify_emails(session->gc, /* handle */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
928 n, /* count */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
929 TRUE, /* detailed */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
930 subjects, froms, tos, urls, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
931 NULL, /* PurpleNotifyCloseCallback cb */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
932 NULL); /* gpointer user_data */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
933 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
934 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
935 |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
936 msim_msg_free(body); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
937 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
938 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
939 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
940 * Send request to check if there is new mail. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
941 */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
942 static gboolean |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
943 msim_check_inbox(gpointer data) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
944 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
945 MsimSession *session; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
946 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
947 session = (MsimSession *)data; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
948 |
21758
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
949 if (!MSIM_SESSION_VALID(session)) { |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
950 purple_debug_info("msim", "msim_check_inbox: session invalid, stopping the mail check.\n"); |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
951 return FALSE; |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
952 } |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
953 |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
954 purple_debug_info("msim", "msim_check_inbox: checking mail\n"); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
955 g_return_val_if_fail(msim_send(session, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
956 "persist", MSIM_TYPE_INTEGER, 1, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
957 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
958 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
959 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
960 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
961 "uid", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
962 "rid", MSIM_TYPE_INTEGER, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
963 msim_new_reply_callback(session, msim_check_inbox_cb, NULL), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
964 "body", MSIM_TYPE_STRING, g_strdup(""), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
965 NULL), TRUE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
966 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
967 /* Always return true, so that we keep checking for mail. */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
968 return TRUE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
969 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
970 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
971 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
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 |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
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; |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
984 gchar *username, *group_name, *display_name; |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
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; |
22475
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
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 | 992 username = g_strdup(msim_uid2username_from_blist(session->account, uid)); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
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"); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
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"); |
22985
882af25a8edf
Fix handling of empty groups in MySpace. Fixes #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22982
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); |
22982
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
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:
22590
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 } |
22982
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
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:
22590
diff
changeset
|
1015 if (!group) { |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
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:
22590
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:
22590
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:
22590
diff
changeset
|
1019 } |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
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 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
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:
24748
diff
changeset
|
1023 if (visibility == 2) { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
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:
24748
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:
24748
diff
changeset
|
1026 msim_msg_free(contact_info); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1027 g_free(username); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1028 g_free(display_name); |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1029 return; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1030 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
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 |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
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:
24750
diff
changeset
|
1044 /* |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
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:
24750
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:
24750
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:
24750
diff
changeset
|
1048 */ |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1049 if (display_name != NULL) { |
25378
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1050 purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
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:
24750
diff
changeset
|
1052 } else { |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1053 serv_got_alias(session->gc, username, |
25378
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1054 purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName")); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1055 } |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1056 } |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
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:
24750
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 */ |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
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 |
24632
128a77f3b3c4
Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents:
24631
diff
changeset
|
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:
24631
diff
changeset
|
1063 /* Keep track of the user ID across sessions */ |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
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 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1076 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
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. |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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 | 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", |
22475
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
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 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1110 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1111 * Called when contact list is received from server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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 |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
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: |
23334
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
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:
23321
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:
23321
diff
changeset
|
1145 buddy_count), |
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
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; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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: |
25057
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
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:
24895
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:
24895
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:
24895
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:
24895
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 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1167 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1168 * Get contact list, calling msim_got_contact_list() with |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1169 * what_to_do_after as user_data gpointer. |
24735 | 1170 * |
1171 * @param what_to_do_after should be one of the MSIM_CONTACT_LIST_* #defines. | |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
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 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1183 "rid", MSIM_TYPE_INTEGER, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
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:
24728
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; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1193 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1194 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1195 |
24734
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24732
diff
changeset
|
1196 /* Set display name to username (otherwise will show email address) */ |
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24732
diff
changeset
|
1197 purple_connection_set_display_name(session->gc, session->username); |
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24732
diff
changeset
|
1198 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1199 body = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1200 "UserID", MSIM_TYPE_INTEGER, session->userid, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1201 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1202 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1203 /* Request IM info about ourself. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1204 msim_send(session, |
24744
e5f8d9ba84db
I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents:
24743
diff
changeset
|
1205 "persist", MSIM_TYPE_INTEGER, 1, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1206 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24745
d7fad2c0cf7c
Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents:
24744
diff
changeset
|
1207 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1208 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1209 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1210 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
24745
d7fad2c0cf7c
Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents:
24744
diff
changeset
|
1211 "UserID", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1212 "body", MSIM_TYPE_DICTIONARY, body, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1213 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1214 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1215 /* Request MySpace info about ourself. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1216 msim_send(session, |
24744
e5f8d9ba84db
I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents:
24743
diff
changeset
|
1217 "persist", MSIM_TYPE_INTEGER, 1, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1218 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24745
d7fad2c0cf7c
Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents:
24744
diff
changeset
|
1219 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1220 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1221 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1222 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1223 "body", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1224 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1225 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1226 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1227 /* TODO: set blocklist */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1228 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1229 /* Notify servers of our current status. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1230 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1231 msim_set_status(session->account, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1232 purple_account_get_active_status(session->account)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1233 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1234 /* TODO: setinfo */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1235 /* |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1236 body = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1237 "TotalFriends", MSIM_TYPE_INTEGER, 666, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1238 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1239 msim_send(session, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1240 "setinfo", MSIM_TYPE_BOOLEAN, TRUE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1241 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1242 "info", MSIM_TYPE_DICTIONARY, body, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1243 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1244 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1245 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1246 /* Disable due to problems with timeouts. TODO: fix. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1247 #ifdef MSIM_USE_KEEPALIVE |
26612
b87843de7c6a
A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
foss@abala.me
parents:
26479
diff
changeset
|
1248 purple_timeout_add_seconds(MSIM_KEEPALIVE_INTERVAL_CHECK, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1249 (GSourceFunc)msim_check_alive, session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1250 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1251 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1252 /* Check mail if they want to. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1253 if (purple_account_get_check_mail(session->account)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1254 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1255 (GSourceFunc)msim_check_inbox, session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1256 msim_check_inbox(session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1257 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1258 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1259 msim_get_contact_list(session, MSIM_CONTACT_LIST_INITIAL_FRIENDS); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1260 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1261 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1262 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1263 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1264 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1265 * Record the client version in the buddy list, from an incoming message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1266 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1267 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1268 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1269 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1270 gchar *username, *cv; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1271 gboolean ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1272 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1273 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1274 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1275 cv = msim_msg_get_string(msg, "cv"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1276 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1277 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1278 if (!cv) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1279 /* No client version to record, don't worry about it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1280 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1281 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1282 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1283 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1284 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1285 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1286 if (user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1287 user->client_cv = atol(cv); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1288 ret = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1289 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1290 ret = FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1291 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1292 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1293 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1294 g_free(cv); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1295 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1296 return ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1297 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1298 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1299 #ifdef MSIM_SEND_CLIENT_VERSION |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1300 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1301 * Send our client version to another unofficial client that understands it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1302 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1303 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1304 msim_send_unofficial_client(MsimSession *session, gchar *username) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1305 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1306 gchar *our_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1307 gboolean ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1308 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1309 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1310 PURPLE_MAJOR_VERSION, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1311 PURPLE_MINOR_VERSION, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1312 PURPLE_MICRO_VERSION, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1313 MSIM_PRPL_VERSION_STRING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1314 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1315 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1316 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1317 return ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1318 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1319 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1320 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1321 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1322 * Process incoming status messages. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1323 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1324 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1325 * @param msg Status update message. Caller frees. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1326 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1327 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1328 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1329 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1330 msim_incoming_status(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1331 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1332 PurpleBuddyList *blist; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1333 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1334 GList *list; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1335 gchar *status_headline, *status_headline_escaped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1336 gint status_code, purple_status_code; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1337 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1338 gchar *unrecognized_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1339 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1340 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1341 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1342 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1343 /* Helpfully looked up by msim_incoming_resolve() for us. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1344 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1345 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1346 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1347 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1348 gchar *ss; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1349 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1350 ss = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1351 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1352 "msim_status: updating status for <%s> to <%s>\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1353 username, ss ? ss : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1354 g_free(ss); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1355 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1356 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1357 /* Example fields: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1358 * |s|0|ss|Offline |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1359 * |s|1|ss|:-)|ls||ip|0|p|0 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1360 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1361 list = msim_msg_get_list(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1362 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1363 status_code = msim_msg_get_integer_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1364 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1365 status_headline = msim_msg_get_string_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1366 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1367 blist = purple_get_blist(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1368 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1369 /* Add buddy if not found. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1370 * TODO: Could this be responsible for #3444? */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1371 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1372 if (!user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1373 PurpleBuddy *buddy; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1374 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1375 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1376 "msim_status: making new buddy for %s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1377 buddy = purple_buddy_new(session->account, username, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1378 purple_blist_add_buddy(buddy, NULL, NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1379 |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1380 user = msim_get_user_from_buddy(buddy, TRUE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1381 user->id = msim_msg_get_integer(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1382 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1383 /* Keep track of the user ID across sessions */ |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1384 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1385 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1386 msim_store_user_info(session, msg, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1387 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1388 purple_debug_info("msim", "msim_status: found buddy %s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1389 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1390 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1391 if (status_headline && strcmp(status_headline, "") != 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1392 /* The status headline is plaintext, but libpurple treats it as HTML, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1393 * so escape any HTML characters to their entity equivalents. */ |
24770 | 1394 status_headline_escaped = g_markup_escape_text(status_headline, -1); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1395 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1396 status_headline_escaped = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1397 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1398 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1399 g_free(status_headline); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1400 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1401 /* don't copy; let the MsimUser own the headline, memory-wise */ |
24770 | 1402 g_free(user->headline); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1403 user->headline = status_headline_escaped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1404 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1405 /* Set user status */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1406 switch (status_code) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1407 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1408 purple_status_code = PURPLE_STATUS_OFFLINE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1409 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1410 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1411 case MSIM_STATUS_CODE_ONLINE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1412 purple_status_code = PURPLE_STATUS_AVAILABLE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1413 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1414 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1415 case MSIM_STATUS_CODE_AWAY: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1416 purple_status_code = PURPLE_STATUS_AWAY; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1417 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1418 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1419 case MSIM_STATUS_CODE_IDLE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1420 /* Treat idle as an available status. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1421 purple_status_code = PURPLE_STATUS_AVAILABLE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1422 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1423 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1424 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1425 purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1426 username, status_code); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1427 purple_status_code = PURPLE_STATUS_AVAILABLE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1428 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1429 unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1430 status_code); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1431 msim_unrecognized(session, NULL, unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1432 g_free(unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1433 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1434 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1435 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1436 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1437 if (status_code == MSIM_STATUS_CODE_IDLE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1438 purple_debug_info("msim", "msim_status: got idle: %s\n", username); |
24763
a8643ca8d2e0
Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents:
24761
diff
changeset
|
1439 purple_prpl_got_user_idle(session->account, username, TRUE, 0); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1440 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1441 /* All other statuses indicate going back to non-idle. */ |
24763
a8643ca8d2e0
Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents:
24761
diff
changeset
|
1442 purple_prpl_got_user_idle(session->account, username, FALSE, 0); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1443 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1444 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1445 #ifdef MSIM_SEND_CLIENT_VERSION |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1446 if (status_code == MSIM_STATUS_CODE_ONLINE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1447 /* Secretly whisper to unofficial clients our own version as they come online */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1448 msim_send_unofficial_client(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1449 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1450 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1451 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1452 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1453 /* Get information when they come online. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1454 * TODO: periodically refresh? |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1455 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1456 purple_debug_info("msim_incoming_status", "%s came online, looking up\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1457 msim_lookup_user(session, username, NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1458 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1459 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1460 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1461 msim_msg_list_free(list); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1462 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1463 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1464 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1465 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1466 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1467 * Handle an incoming instant message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1468 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1469 * @param session The session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1470 * @param msg Message from the server, containing 'f' (userid from) and 'msg'. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1471 * Should also contain username in _username from preprocessing. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1472 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1473 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1474 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1475 static gboolean |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1476 msim_incoming_im(MsimSession *session, MsimMessage *msg, const gchar *username) |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1477 { |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1478 gchar *msg_msim_markup, *msg_purple_markup; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1479 gchar *userid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1480 time_t time_received; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1481 PurpleConversation *conv; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1482 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1483 /* I know this isn't really a string... but we need it to be one for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1484 * purple_find_conversation_with_account(). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1485 userid = msim_msg_get_string(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1486 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1487 purple_debug_info("msim_incoming_im", "UserID is %s", userid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1488 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1489 if (msim_is_userid(username)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1490 purple_debug_info("msim", "Ignoring message from spambot (%s) on account %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1491 username, purple_account_get_username(session->account)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1492 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1493 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1494 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1495 /* See if a conversation with their UID already exists...*/ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1496 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, userid, session->account); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1497 if (conv) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1498 /* Since the conversation exists... We need to normalize it */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1499 purple_conversation_set_name(conv, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1500 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1501 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1502 msg_msim_markup = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1503 g_return_val_if_fail(msg_msim_markup != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1504 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1505 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1506 g_free(msg_msim_markup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1507 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1508 time_received = msim_msg_get_integer(msg, "date"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1509 if (!time_received) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1510 purple_debug_info("msim_incoming_im", "date in message not set.\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1511 time_received = time(NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1512 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1513 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1514 serv_got_im(session->gc, username, msg_purple_markup, PURPLE_MESSAGE_RECV, time_received); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1515 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1516 g_free(msg_purple_markup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1517 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1518 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1519 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1520 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1521 /** |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1522 * Handle an incoming action message or an IM. |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1523 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1524 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1525 * @param msg |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1526 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1527 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1528 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1529 static gboolean |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1530 msim_incoming_action_or_im(MsimSession *session, MsimMessage *msg) |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1531 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1532 gchar *msg_text, *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1533 gboolean rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1534 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1535 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1536 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1537 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1538 msg_text = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1539 g_return_val_if_fail(msg_text != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1540 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1541 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1542 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1543 |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1544 purple_debug_info("msim", |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1545 "msim_incoming_action_or_im: action <%s> from <%s>\n", |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1546 msg_text, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1547 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1548 if (g_str_equal(msg_text, "%typing%")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1549 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1550 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1551 } else if (g_str_equal(msg_text, "%stoptyping%")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1552 serv_got_typing_stopped(session->gc, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1553 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1554 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1555 rc = msim_incoming_zap(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1556 } else if (strstr(msg_text, "!!!GroupCount=")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1557 /* TODO: support group chats. I think the number in msg_text has |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1558 * something to do with the 'gid' field. */ |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1559 purple_debug_info("msim", |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1560 "msim_incoming_action_or_im: " |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1561 "TODO: implement #4691, group chats: %s\n", msg_text); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1562 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1563 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1564 } else if (strstr(msg_text, "!!!Offline=")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1565 /* TODO: support group chats. This one might mean a user |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1566 * went offline or exited the chat. */ |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1567 purple_debug_info("msim", "msim_incoming_action_or_im: " |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1568 "TODO: implement #4691, group chats: %s\n", msg_text); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1569 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1570 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1571 } else if (msim_msg_get_integer(msg, "aid") != 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1572 purple_debug_info("msim", "TODO: implement #4691, group chat from %d on %d: %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1573 msim_msg_get_integer(msg, "aid"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1574 msim_msg_get_integer(msg, "f"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1575 msg_text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1576 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1577 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1578 } else { |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1579 rc = msim_incoming_im(session, msg, username); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1580 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1581 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1582 g_free(msg_text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1583 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1584 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1585 return rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1586 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1587 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1588 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1589 * Process an incoming media (message background?) message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1590 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1591 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1592 msim_incoming_media(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1593 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1594 gchar *username, *text; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1595 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1596 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1597 text = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1598 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1599 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1600 g_return_val_if_fail(text != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1601 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1602 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1603 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1604 /* Media messages are sent when the user opens a window to someone. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1605 * Tell libpurple they started typing and stopped typing, to inform the Psychic |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1606 * Mode plugin so it too can open a window to the user. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1607 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1608 serv_got_typing_stopped(session->gc, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1609 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1610 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1611 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1612 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1613 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1614 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1615 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1616 * Process an incoming "unofficial client" message. The plugin for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1617 * Miranda IM sends this message with the plugin information. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1618 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1619 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1620 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1621 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1622 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1623 gchar *username, *client_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1624 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1625 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1626 client_info = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1627 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1628 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1629 g_return_val_if_fail(client_info != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1630 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1631 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1632 username, client_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1633 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1634 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1635 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1636 g_return_val_if_fail(user != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1637 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1638 if (user->client_info) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1639 g_free(user->client_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1640 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1641 user->client_info = client_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1642 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1643 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1644 /* Do not free client_info - the MsimUser now owns it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1645 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1646 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1647 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1648 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1649 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1650 * Handle an incoming buddy message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1651 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1652 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1653 msim_incoming_bm(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1654 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1655 guint bm; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1656 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1657 bm = msim_msg_get_integer(msg, "bm"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1658 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1659 msim_incoming_bm_record_cv(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1660 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1661 switch (bm) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1662 case MSIM_BM_STATUS: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1663 return msim_incoming_status(session, msg); |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1664 case MSIM_BM_INSTANT_ACTION_OR_IM: |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1665 case MSIM_BM_DELAYABLE_ACTION_OR_IM: |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1666 return msim_incoming_action_or_im(session, msg); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1667 case MSIM_BM_MEDIA: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1668 return msim_incoming_media(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1669 case MSIM_BM_UNOFFICIAL_CLIENT: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1670 return msim_incoming_unofficial_client(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1671 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1672 /* Not really an IM, but show it for informational |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1673 * purposes during development. */ |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1674 /* TODO: This is probably wrong */ |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1675 return msim_incoming_action_or_im(session, msg); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1676 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1677 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1678 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1679 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1680 * Process the initial server information from the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1681 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1682 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1683 msim_process_server_info(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1684 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1685 MsimMessage *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1686 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1687 body = msim_msg_get_dictionary(msg, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1688 g_return_val_if_fail(body != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1689 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1690 /* Example body: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1691 AdUnitRefreshInterval=10. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1692 AlertPollInterval=360. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1693 AllowChatRoomEmoticonSharing=False. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1694 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1695 CurClientVersion=673. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1696 EnableIMBrowse=True. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1697 EnableIMStuffAvatars=False. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1698 EnableIMStuffZaps=False. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1699 MaxAddAllFriends=100. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1700 MaxContacts=1000. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1701 MinClientVersion=594. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1702 MySpaceIM_ENGLISH=78744676. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1703 MySpaceNowTimer=720. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1704 PersistenceDataTimeout=900. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1705 UseWebChallenge=1. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1706 WebTicketGoHome=False |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1707 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1708 Anything useful? TODO: use what is useful, and use it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1709 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1710 purple_debug_info("msim_process_server_info", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1711 "maximum contacts: %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1712 msim_msg_get_integer(body, "MaxContacts")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1713 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1714 session->server_info = body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1715 /* session->server_info freed in msim_session_destroy */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1716 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1717 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1718 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1719 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1720 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1721 * Process a web challenge, used to login to the web site. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1722 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1723 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1724 msim_web_challenge(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1725 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1726 /* TODO: web challenge, store token. #2659. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1727 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1728 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1729 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1730 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1731 * Process a persistance message reply from the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1732 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1733 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1734 * @param msg Message reply from server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1735 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1736 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1737 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1738 * msim_lookup_user sets callback for here |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1739 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1740 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1741 msim_process_reply(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1742 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1743 MSIM_USER_LOOKUP_CB cb; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1744 gpointer data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1745 guint rid, cmd, dsn, lid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1746 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1747 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1748 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1749 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1750 msim_store_user_info(session, msg, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1751 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1752 rid = msim_msg_get_integer(msg, "rid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1753 cmd = msim_msg_get_integer(msg, "cmd"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1754 dsn = msim_msg_get_integer(msg, "dsn"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1755 lid = msim_msg_get_integer(msg, "lid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1756 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1757 /* Unsolicited messages */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1758 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1759 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1760 return msim_process_server_info(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1761 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1762 return msim_web_challenge(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1763 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1764 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1765 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1766 /* If a callback is registered for this userid lookup, call it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1767 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1768 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1769 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1770 if (cb) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1771 purple_debug_info("msim", "msim_process_reply: calling callback now\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1772 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */ |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
1773 cb(session, msg, data); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1774 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1775 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1776 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1777 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1778 "msim_process_reply: no callback for rid %d\n", rid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1779 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1780 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1781 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1782 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1783 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1784 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1785 * Handle an error from the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1786 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1787 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1788 * @param msg The message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1789 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1790 * @return TRUE if successfully reported error. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1791 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1792 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1793 msim_error(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1794 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1795 gchar *errmsg, *full_errmsg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1796 guint err; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1797 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1798 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1799 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1800 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1801 err = msim_msg_get_integer(msg, "err"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1802 errmsg = msim_msg_get_string(msg, "errmsg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1803 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1804 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1805 errmsg ? errmsg : "no 'errmsg' given"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1806 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1807 g_free(errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1808 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1809 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1810 session->sesskey, full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1811 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1812 /* Destroy session if fatal. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1813 if (msim_msg_get(msg, "fatal")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1814 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1815 purple_debug_info("msim", "fatal error, closing\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1816 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1817 switch (err) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1818 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1819 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1820 if (!purple_account_get_remember_password(session->account)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1821 purple_account_set_password(session->account, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1822 #ifdef MSIM_MAX_PASSWORD_LENGTH |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1823 if (session->account->password && (strlen(session->account->password) > MSIM_MAX_PASSWORD_LENGTH)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1824 gchar *suggestion; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1825 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1826 suggestion = g_strdup_printf(_("%s Your password is " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1827 "%d characters, greater than the " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1828 "expected maximum length of %d for " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1829 "MySpaceIM. Please shorten your " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1830 "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1831 full_errmsg, (int) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1832 strlen(session->account->password), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1833 MSIM_MAX_PASSWORD_LENGTH); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1834 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1835 /* Replace full_errmsg. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1836 g_free(full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1837 full_errmsg = suggestion; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1838 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1839 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1840 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1841 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1842 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1843 if (!purple_account_get_remember_password(session->account)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1844 purple_account_set_password(session->account, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1845 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1846 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1847 purple_connection_error_reason (session->gc, reason, full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1848 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1849 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1850 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1851 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1852 g_free(full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1853 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1854 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1855 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1856 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1857 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1858 * Process a message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1859 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1860 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1861 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1862 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1863 * @return TRUE if successful. FALSE if processing failed. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1864 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1865 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1866 msim_process(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1867 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1868 g_return_val_if_fail(session != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1869 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1870 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1871 if (msim_msg_get_integer(msg, "lc") == 1) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1872 return msim_login_challenge(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1873 } else if (msim_msg_get_integer(msg, "lc") == 2) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1874 /* return msim_we_are_logged_on(session, msg); */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1875 if (msim_is_username_set(session, msg)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1876 return msim_we_are_logged_on(session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1877 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1878 /* No username is set... We'll wait for the callbacks to do their work */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1879 /* When they're all done, the last one will call msim_we_are_logged_on() and pick up where we left off */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1880 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1881 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1882 } else if (msim_msg_get(msg, "bm")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1883 return msim_incoming_bm(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1884 } else if (msim_msg_get(msg, "rid")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1885 return msim_process_reply(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1886 } else if (msim_msg_get(msg, "error")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1887 return msim_error(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1888 } else if (msim_msg_get(msg, "ka")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1889 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1890 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1891 msim_unrecognized(session, msg, "in msim_process"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1892 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1893 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1894 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1895 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1896 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1897 * After a uid is resolved to username, tag it with the username and submit for processing. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1898 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1899 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1900 * @param userinfo Response messsage to resolving request. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1901 * @param data MsimMessage *, the message to attach information to. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1902 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1903 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
1904 msim_incoming_resolved(MsimSession *session, const MsimMessage *userinfo, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1905 gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1906 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1907 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1908 MsimMessage *msg, *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1909 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1910 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1911 g_return_if_fail(userinfo != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1912 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1913 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
|
1914 g_return_if_fail(body != NULL); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1915 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1916 username = msim_msg_get_string(body, "UserName"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1917 g_return_if_fail(username != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1918 /* Note: username will be owned by 'msg' below. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1919 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1920 msg = (MsimMessage *)data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1921 g_return_if_fail(msg != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1922 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1923 /* TODO: more elegant solution than below. attach whole message? */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1924 /* Special elements name beginning with '_', we'll use internally within the |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1925 * program (did not come directly from the wire). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1926 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, username); /* This makes 'msg' the owner of 'username' */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1927 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1928 /* TODO: attach more useful information, like ImageURL */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1929 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1930 msim_process(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1931 |
24853
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
1932 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
|
1933 msim_msg_free(body); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1934 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1935 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1936 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1937 * Preprocess incoming messages, resolving as needed, calling |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1938 * msim_process() when ready to process. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1939 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1940 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1941 * @param msg MsimMessage *, freed by caller. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1942 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1943 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1944 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1945 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1946 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1947 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1948 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1949 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1950 guint uid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1951 const gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1952 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1953 /* 'f' = userid message is from, in buddy messages */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1954 uid = msim_msg_get_integer(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1955 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1956 username = msim_uid2username_from_blist(session->account, uid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1957 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1958 if (username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1959 /* Know username already, use it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1960 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1961 username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1962 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1963 return msim_process(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1964 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1965 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1966 gchar *from; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1967 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1968 /* Send lookup request. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1969 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1970 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1971 from = msim_msg_get_string(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1972 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1973 g_free(from); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1974 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1975 /* indeterminate */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1976 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1977 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1978 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1979 /* Nothing to resolve - send directly to processing. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1980 return msim_process(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1981 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1982 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1983 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1984 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1985 * Callback when input available. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1986 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1987 * @param gc_uncasted A PurpleConnection pointer. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1988 * @param source File descriptor. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1989 * @param cond PURPLE_INPUT_READ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1990 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1991 * Reads the input, and calls msim_preprocess_incoming() to handle it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1992 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1993 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1994 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1995 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1996 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1997 PurpleAccount *account; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1998 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1999 gchar *end; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2000 int n; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2001 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2002 g_return_if_fail(gc_uncasted != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2003 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2004 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2005 gc = (PurpleConnection *)(gc_uncasted); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2006 account = purple_connection_get_account(gc); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2007 session = gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2008 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2009 /* libpurple/eventloop.h only defines these two */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2010 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2011 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2012 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2013 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2014 _("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
|
2015 return; |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2016 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2017 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2018 g_return_if_fail(cond == PURPLE_INPUT_READ); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2019 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2020 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2021 /* Mark down that we got data, so we don't timeout. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2022 session->last_comm = time(NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2023 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2024 /* If approaching end of buffer, reallocate some more memory. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2025 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2026 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2027 "msim_input_cb: %d-byte read buffer full, rxoff=%d, " "growing by %d bytes\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2028 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2029 session->rxsize += MSIM_READ_BUF_SIZE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2030 session->rxbuf = g_realloc(session->rxbuf, session->rxsize); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2031 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2032 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2033 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2034 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2035 purple_debug_info("msim", "dynamic buffer at %d (max %d), reading up to %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2036 session->rxoff, session->rxsize, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2037 MSIM_READ_BUF_SIZE - session->rxoff - 1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2038 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2039 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2040 * the file descriptor, but it sometimes differs from the 'source' parameter. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2041 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2042 n = recv(session->fd, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2043 session->rxbuf + session->rxoff, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2044 session->rxsize - session->rxoff - 1, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2045 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2046 if (n < 0 && errno == EAGAIN) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2047 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2048 } else if (n < 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2049 purple_debug_error("msim", "msim_input_cb: read error, ret=%d, " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2050 "error=%s, source=%d, fd=%d (%X))\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2051 n, g_strerror(errno), source, session->fd, session->fd); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2052 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2053 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2054 _("Read error")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2055 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2056 } else if (n == 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2057 purple_debug_info("msim", "msim_input_cb: server disconnected\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2058 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2059 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2060 _("Server has disconnected")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2061 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2062 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2063 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2064 if (n + session->rxoff > session->rxsize) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2065 purple_debug_info("msim_input_cb", "received %d bytes, pushing rxoff to %d, over buffer size of %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2066 n, n + session->rxoff, session->rxsize); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2067 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2068 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2069 _("Read buffer full (2)")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2070 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2071 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2072 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2073 /* Null terminate */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2074 purple_debug_info("msim", "msim_input_cb: going to null terminate " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2075 "at n=%d\n", n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2076 session->rxbuf[session->rxoff + n] = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2077 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2078 #ifdef MSIM_CHECK_EMBEDDED_NULLS |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2079 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2080 if (strlen(session->rxbuf + session->rxoff) != n) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2081 /* Occurs after login, but it is not a null byte. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2082 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes" |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2083 "--null byte encountered?\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2084 strlen(session->rxbuf + session->rxoff), n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2085 /*purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2086 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2087 "Invalid message - null byte on input"); */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2088 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2089 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2090 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2091 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2092 session->rxoff += n; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2093 purple_debug_info("msim", "msim_input_cb: read=%d\n", n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2094 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2095 #ifdef MSIM_DEBUG_RXBUF |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2096 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2097 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2098 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2099 /* Look for \\final\\ end markers. If found, process message. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2100 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2101 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2102 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2103 #ifdef MSIM_DEBUG_RXBUF |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2104 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2105 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2106 *end = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2107 msg = msim_parse(session->rxbuf); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2108 if (!msg) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2109 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2110 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2111 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2112 _("Unparseable message")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2113 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2114 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2115 /* Process message and then free it (processing function should |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2116 * clone message if it wants to keep it afterwards.) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2117 if (!msim_preprocess_incoming(session, msg)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2118 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2119 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2120 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2121 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2122 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2123 /* Move remaining part of buffer to beginning. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2124 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2125 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2126 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2127 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2128 /* Clear end of buffer |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2129 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2130 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2131 } |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2132 } |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2133 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2134 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2135 * Callback when connected. Sets up input handlers. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2136 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2137 * @param data A PurpleConnection pointer. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2138 * @param source File descriptor. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2139 * @param error_message |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2140 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2141 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2142 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
|
2143 { |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2144 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
|
2145 MsimSession *session; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2146 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2147 g_return_if_fail(data != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2148 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2149 gc = (PurpleConnection *)data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2150 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2151 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2152 if (source < 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2153 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2154 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2155 g_strdup_printf(_("Couldn't connect to host: %s (%d)"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2156 error_message ? error_message : "no message given", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2157 source)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2158 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2159 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2160 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2161 session->fd = source; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2162 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2163 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2164 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2165 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2166 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2167 * Start logging in to the MSIM servers. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2168 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2169 * @param acct Account information to use to login. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2170 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2171 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2172 msim_login(PurpleAccount *acct) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2173 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2174 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2175 const gchar *host; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2176 int port; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2177 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2178 g_return_if_fail(acct != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2179 g_return_if_fail(acct->username != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2180 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2181 purple_debug_info("msim", "logging in %s\n", acct->username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2182 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2183 gc = purple_account_get_connection(acct); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2184 gc->proto_data = msim_session_new(acct); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2185 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2186 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2187 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2188 * Lets wipe out our local list of blocked buddies. We'll get a |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2189 * list of all blocked buddies from the server, and we shouldn't |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2190 * have stuff in the local list that isn't on the server list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2191 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2192 while (acct->deny != NULL) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2193 purple_privacy_deny_remove(acct, acct->deny->data, TRUE); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2194 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2195 /* 1. connect to server */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2196 purple_connection_update_progress(gc, _("Connecting"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2197 0, /* which connection step this is */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2198 4); /* total number of steps */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2199 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2200 host = purple_account_get_string(acct, "server", MSIM_SERVER); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2201 port = purple_account_get_int(acct, "port", MSIM_PORT); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2202 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2203 /* From purple.sf.net/api: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2204 * """Note that this function name can be misleading--although it is called |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2205 * "proxy connect," it is used for establishing any outgoing TCP connection, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2206 * whether through a proxy or not.""" */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2207 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2208 /* Calls msim_connect_cb when connected. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2209 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2210 /* TODO: try other ports if in auto mode, then save |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2211 * working port and try that first next time. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2212 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2213 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2214 _("Couldn't create socket")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2215 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2216 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2217 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2218 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2219 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2220 * Close the connection. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2221 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2222 * @param gc The connection. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2223 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2224 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2225 msim_close(PurpleConnection *gc) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2226 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2227 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2228 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2229 if (gc == NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2230 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2231 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2232 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2233 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2234 if (session == NULL) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2235 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2236 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2237 gc->proto_data = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2238 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2239 if (!MSIM_SESSION_VALID(session)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2240 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2241 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2242 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2243 if (session->gc->inpa) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2244 purple_input_remove(session->gc->inpa); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2245 } |
24767
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2246 if (session->fd >= 0) { |
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2247 close(session->fd); |
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2248 session->fd = -1; |
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2249 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2250 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2251 msim_session_destroy(session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2252 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2253 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2254 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2255 * Schedule an IM to be sent once the user ID is looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2256 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2257 * @param gc Connection. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2258 * @param who A user id, email, or username to send the message to. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2259 * @param message Instant message text to send. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2260 * @param flags Flags. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2261 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2262 * @return 1 if successful or postponed, -1 if failed |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2263 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2264 * Allows sending to a user by username, email address, or userid. If |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2265 * a username or email address is given, the userid must be looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2266 * This function does that by calling msim_postprocess_outgoing(). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2267 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2268 static int |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2269 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2270 PurpleMessageFlags flags) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2271 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2272 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2273 gchar *message_msim; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2274 int rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2275 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2276 g_return_val_if_fail(gc != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2277 g_return_val_if_fail(who != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2278 g_return_val_if_fail(message != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2279 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2280 /* 'flags' has many options, not used here. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2281 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2282 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2283 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2284 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2285 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2286 message_msim = html_to_msim_markup(session, message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2287 |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
2288 if (msim_send_bm(session, who, message_msim, MSIM_BM_DELAYABLE_ACTION_OR_IM)) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2289 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2290 * return 1 even if the message could not be sent, since I don't know if |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2291 * it has failed yet--because the IM is only sent after the userid is |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2292 * retrieved from the server (which happens after this function returns). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2293 * If an error does occur, it should be logged to the IM window. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2294 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2295 rc = 1; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2296 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2297 rc = -1; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2298 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2299 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2300 g_free(message_msim); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2301 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2302 return rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2303 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2304 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2305 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2306 * Handle when our user starts or stops typing to another user. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2307 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2308 * @param gc |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2309 * @param name The buddy name to which our user is typing to |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2310 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2311 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2312 * @return 0 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2313 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2314 static unsigned int |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2315 msim_send_typing(PurpleConnection *gc, const gchar *name, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2316 PurpleTypingState state) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2317 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2318 const gchar *typing_str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2319 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2320 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2321 g_return_val_if_fail(gc != NULL, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2322 g_return_val_if_fail(name != NULL, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2323 |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2324 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
|
2325 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2326 g_return_val_if_fail(MSIM_SESSION_VALID(session), 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2327 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2328 switch (state) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2329 case PURPLE_TYPING: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2330 typing_str = "%typing%"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2331 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2332 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2333 case PURPLE_TYPED: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2334 case PURPLE_NOT_TYPING: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2335 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2336 typing_str = "%stoptyping%"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2337 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2338 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2339 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2340 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str); |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
2341 msim_send_bm(session, name, typing_str, MSIM_BM_INSTANT_ACTION_OR_IM); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2342 return 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2343 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2344 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2345 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2346 * Callback for msim_get_info(), for when user info is received. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2347 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2348 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
2349 msim_get_info_cb(MsimSession *session, const MsimMessage *user_info_msg, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2350 gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2351 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2352 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2353 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2354 PurpleNotifyUserInfo *user_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2355 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2356 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2357 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2358 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2359 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2360 orthogonality. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2361 msg = (MsimMessage *)data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2362 g_return_if_fail(msg != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2363 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2364 username = msim_msg_get_string(msg, "user"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2365 if (!username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2366 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2367 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2368 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2369 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2370 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2371 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2372 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2373 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2374 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2375 if (!user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2376 /* User isn't on blist, create a temporary user to store info. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2377 user = g_new0(MsimUser, 1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2378 user->temporary_user = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2379 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2380 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2381 /* Update user structure with new information */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2382 msim_store_user_info(session, user_info_msg, user); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2383 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2384 user_info = purple_notify_user_info_new(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2385 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2386 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2387 msim_append_user_info(session, user_info, user, TRUE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2388 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2389 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2390 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2391 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2392 purple_notify_user_info_destroy(user_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2393 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2394 if (user->temporary_user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2395 g_free(user->client_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2396 g_free(user->gender); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2397 g_free(user->location); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2398 g_free(user->headline); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2399 g_free(user->display_name); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2400 g_free(user->username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2401 g_free(user->image_url); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2402 g_free(user); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2403 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2404 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2405 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2406 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2407 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2408 * Retrieve a user's profile. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2409 * @param username Username, user ID, or email address to lookup. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2410 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2411 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2412 msim_get_info(PurpleConnection *gc, const gchar *username) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2413 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2414 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2415 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2416 gchar *user_to_lookup; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2417 MsimMessage *user_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2418 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2419 g_return_if_fail(gc != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2420 g_return_if_fail(username != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2421 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2422 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2423 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2424 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2425 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2426 /* Obtain uid of buddy. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2427 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2428 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2429 /* If is on buddy list, lookup by uid since it is faster. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2430 if (user && user->id) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2431 user_to_lookup = g_strdup_printf("%d", user->id); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2432 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2433 /* Looking up buddy not on blist. Lookup by whatever user entered. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2434 user_to_lookup = g_strdup(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2435 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2436 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2437 /* Pass the username to msim_get_info_cb(), because since we lookup |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2438 * by userid, the userinfo message will only contain the uid (not |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2439 * the username) but it would be useful to display the username too. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2440 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2441 user_msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2442 "user", MSIM_TYPE_STRING, g_strdup(username), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2443 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2444 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2445 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2446 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2447 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2448 g_free(user_to_lookup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2449 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2450 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2451 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2452 * Set status using an MSIM_STATUS_CODE_* value. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2453 * @param status_code An MSIM_STATUS_CODE_* value. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2454 * @param statstring Status string, must be a dynamic string (will be freed by msim_send). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2455 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2456 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2457 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2458 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2459 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2460 g_return_if_fail(statstring != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2461 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2462 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2463 status_code, statstring); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2464 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2465 if (!msim_send(session, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2466 "status", MSIM_TYPE_INTEGER, status_code, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2467 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2468 "statstring", MSIM_TYPE_STRING, statstring, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2469 "locstring", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2470 NULL)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2471 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2472 purple_debug_info("msim", "msim_set_status: failed to set status\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2473 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2474 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2475 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2476 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2477 * Set your status - callback for when user manually sets it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2478 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2479 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2480 msim_set_status(PurpleAccount *account, PurpleStatus *status) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2481 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2482 PurpleStatusType *type; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2483 PurplePresence *pres; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2484 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2485 guint status_code; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2486 const gchar *message; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2487 gchar *stripped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2488 gchar *unrecognized_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2489 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2490 session = (MsimSession *)account->gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2491 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2492 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2493 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2494 type = purple_status_get_type(status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2495 pres = purple_status_get_presence(status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2496 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2497 switch (purple_status_type_get_primitive(type)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2498 case PURPLE_STATUS_AVAILABLE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2499 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2500 MSIM_STATUS_CODE_ONLINE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2501 status_code = MSIM_STATUS_CODE_ONLINE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2502 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2503 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2504 case PURPLE_STATUS_INVISIBLE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2505 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2506 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2507 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2508 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2509 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2510 case PURPLE_STATUS_AWAY: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2511 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2512 MSIM_STATUS_CODE_AWAY); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2513 status_code = MSIM_STATUS_CODE_AWAY; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2514 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2515 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2516 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2517 purple_debug_info("msim", "msim_set_status: unknown " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2518 "status interpreting as online"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2519 status_code = MSIM_STATUS_CODE_ONLINE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2520 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2521 unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2522 purple_status_type_get_primitive(type)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2523 msim_unrecognized(session, NULL, unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2524 g_free(unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2525 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2526 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2527 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2528 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2529 message = purple_status_get_attr_string(status, "message"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2530 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2531 /* Status strings are plain text. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2532 if (message != NULL) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2533 stripped = purple_markup_strip_html(message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2534 else |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2535 stripped = g_strdup(""); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2536 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2537 msim_set_status_code(session, status_code, stripped); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2538 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2539 /* If we should be idle, set that status. Time is irrelevant here. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2540 if (purple_presence_is_idle(pres) && status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2541 msim_set_idle(account->gc, 1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2542 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2543 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2544 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2545 * Go idle. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2546 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2547 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2548 msim_set_idle(PurpleConnection *gc, int time) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2549 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2550 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2551 PurpleStatus *status; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2552 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2553 g_return_if_fail(gc != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2554 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2555 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2556 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2557 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2558 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2559 status = purple_account_get_active_status(session->account); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2560 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2561 if (time == 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2562 /* Going back from idle. In msim, idle is mutually exclusive |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2563 * from the other states (you can only be away or idle, but not |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2564 * both, for example), so by going non-idle I go back to what |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2565 * libpurple says I should be. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2566 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2567 msim_set_status(session->account, status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2568 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2569 const gchar *message; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2570 gchar *stripped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2571 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2572 /* Set the idle message to the status message from the real |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2573 * current status. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2574 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2575 message = purple_status_get_attr_string(status, "message"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2576 if (message != NULL) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2577 stripped = purple_markup_strip_html(message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2578 else |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2579 stripped = g_strdup(""); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2580 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2581 /* msim doesn't support idle time, so just go idle */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2582 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2583 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2584 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2585 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2586 /** |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2587 * @return TRUE if everything was ok, FALSE if something went awry. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2588 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2589 static gboolean |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2590 msim_update_blocklist_for_buddy(MsimSession *session, const char *name, gboolean allow, gboolean block) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2591 { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2592 MsimMessage *msg; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2593 GList *list; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2594 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2595 list = NULL; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2596 list = g_list_prepend(list, allow ? "a+" : "a-"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2597 list = g_list_prepend(list, "<uid>"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2598 list = g_list_prepend(list, block ? "b+" : "b-"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2599 list = g_list_prepend(list, "<uid>"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2600 list = g_list_reverse(list); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2601 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2602 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2603 "blocklist", MSIM_TYPE_BOOLEAN, TRUE, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2604 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2605 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2606 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2607 "idlist", MSIM_TYPE_LIST, list, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2608 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2609 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2610 if (!msim_postprocess_outgoing(session, msg, name, "idlist", NULL)) { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2611 purple_debug_error("myspace", |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2612 "blocklist command failed for %s, allow=%d, block=%d\n", |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2613 name, allow, block); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2614 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2615 return FALSE; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2616 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2617 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2618 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2619 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2620 return TRUE; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2621 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2622 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2623 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2624 * Add a buddy to user's buddy list. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2625 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2626 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2627 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2628 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2629 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2630 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2631 MsimMessage *msg_persist; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2632 MsimMessage *body; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2633 const char *name, *gname; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2634 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2635 session = (MsimSession *)gc->proto_data; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2636 name = purple_buddy_get_name(buddy); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2637 gname = group ? purple_group_get_name(group) : NULL; |
24509
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2638 |
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2639 if (msim_get_user_from_buddy(buddy, FALSE) != NULL) |
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2640 return; |
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2641 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2642 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n", |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2643 name, gname ? gname : "(no group)"); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2644 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2645 msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2646 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2647 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2648 /* "newprofileid" will be inserted here with uid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2649 "reason", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2650 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2651 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2652 if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2653 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed.")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2654 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2655 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2656 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2657 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2658 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2659 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2660 * buddy list since Purple adds it locally. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2661 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2662 body = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2663 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2664 "GroupName", MSIM_TYPE_STRING, g_strdup(gname), |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2665 "Position", MSIM_TYPE_INTEGER, 1000, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2666 "Visibility", MSIM_TYPE_INTEGER, 1, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2667 "NickName", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2668 "NameSelect", MSIM_TYPE_INTEGER, 0, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2669 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2670 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2671 /* TODO: Update blocklist. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2672 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2673 msg_persist = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2674 "persist", MSIM_TYPE_INTEGER, 1, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2675 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2676 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2677 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2678 "uid", MSIM_TYPE_INTEGER, session->userid, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2679 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2680 /* TODO: Use msim_new_reply_callback to get rid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2681 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2682 "body", MSIM_TYPE_DICTIONARY, body, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2683 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2684 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2685 if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL)) |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2686 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2687 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2688 msim_msg_free(msg_persist); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2689 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2690 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2691 msim_msg_free(msg_persist); |
24748
75ecd41a64ba
Fix a bug where if "Show our presence only to people on our buddy list"
Mark Doliner <mark@kingant.net>
parents:
24747
diff
changeset
|
2692 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2693 /* Add to allow list, remove from block list */ |
25378
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2694 msim_update_blocklist_for_buddy(session, name, TRUE, FALSE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2695 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2696 |
25383 | 2697 static void |
2698 msim_buddy_free(PurpleBuddy *buddy) | |
2699 { | |
2700 msim_user_free(purple_buddy_get_protocol_data(buddy)); | |
2701 purple_buddy_set_protocol_data(buddy, NULL); | |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2702 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2703 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2704 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2705 * Remove a buddy from the user's buddy list. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2706 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2707 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2708 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2709 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2710 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2711 MsimMessage *delbuddy_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2712 MsimMessage *persist_msg; |
25377
a4a17fe80160
explicit merge of 'f7807039eeef499a403d638cbcb94060a1d33eea'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2713 const char *name; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2714 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2715 session = (MsimSession *)gc->proto_data; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2716 name = purple_buddy_get_name(buddy); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2717 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2718 delbuddy_msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2719 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2720 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2721 /* 'delprofileid' with uid will be inserted here. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2722 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2723 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2724 if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2725 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2726 msim_msg_free(delbuddy_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2727 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2728 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2729 msim_msg_free(delbuddy_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2730 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2731 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
|
2732 "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
|
2733 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2734 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2735 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2736 "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
|
2737 "uid", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2738 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2739 /* <uid> will be replaced by postprocessing */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2740 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2741 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2742 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2743 if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2744 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2745 msim_msg_free(persist_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2746 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2747 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2748 msim_msg_free(persist_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2749 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2750 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2751 * Remove from our approve list and from our block list (this |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2752 * doesn't seem like it would be necessary, but the official client |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2753 * does it) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2754 */ |
25383 | 2755 if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) { |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2756 purple_notify_error(NULL, NULL, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2757 _("Failed to remove buddy"), _("blocklist command failed")); |
24853
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
2758 return; |
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
2759 } |
25382
c0b42d6c2785
propagate from branch 'im.pidgin.pidgin' (head f018e11a7ea08e07f22667e6daca2ec7e64f9710)
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2760 msim_buddy_free(buddy); |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2761 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2762 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2763 /** |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2764 * Remove a buddy from the user's buddy list and add them to the block list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2765 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2766 static void |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2767 msim_add_deny(PurpleConnection *gc, const char *name) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2768 { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2769 MsimSession *session; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2770 MsimMessage *msg, *body; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2771 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2772 session = (MsimSession *)gc->proto_data; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2773 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2774 /* Remove from buddy list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2775 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2776 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2777 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2778 /* 'delprofileid' with uid will be inserted here. */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2779 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2780 if (!msim_postprocess_outgoing(session, msg, name, "delprofileid", NULL)) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2781 purple_debug_error("myspace", "delbuddy command failed\n"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2782 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2783 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2784 /* Remove from our approve list and add to our block list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2785 msim_update_blocklist_for_buddy(session, name, FALSE, TRUE); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2786 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2787 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2788 * Add the buddy to our list of blocked contacts, so we know they |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2789 * are blocked if we log in with another client |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2790 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2791 body = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2792 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2793 "Visibility", MSIM_TYPE_INTEGER, 2, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2794 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2795 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2796 "persist", MSIM_TYPE_INTEGER, 1, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2797 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2798 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2799 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2800 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2801 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2802 "body", MSIM_TYPE_DICTIONARY, body, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2803 NULL); |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2804 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL)) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2805 purple_debug_error("myspace", "add to block list command failed\n"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2806 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2807 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2808 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2809 * TODO: MySpace doesn't allow blocked buddies on our buddy list, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2810 * do they? If not then we need to remove the buddy from |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2811 * libpurple's buddy list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2812 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2813 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2814 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2815 /** |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2816 * Remove a buddy from the user's block list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2817 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2818 static void |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2819 msim_rem_deny(PurpleConnection *gc, const char *name) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2820 { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2821 MsimSession *session; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2822 MsimMessage *msg, *body; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2823 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2824 session = (MsimSession *)gc->proto_data; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2825 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2826 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2827 * Remove from our list of blocked contacts, so we know they |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2828 * are no longer blocked if we log in with another client |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2829 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2830 body = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2831 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2832 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2833 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2834 "persist", MSIM_TYPE_INTEGER, 1, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2835 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2836 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2837 "dsn", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_DSN, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2838 "lid", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_LID, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2839 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2840 "body", MSIM_TYPE_DICTIONARY, body, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2841 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2842 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL)) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2843 purple_debug_error("myspace", "remove from block list command failed\n"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2844 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2845 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2846 /* Remove from our approve list and our block list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2847 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
|
2848 } |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2849 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2850 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2851 * Returns a string of a username in canonical form. Basically removes all the |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2852 * spaces, lowercases the string, and looks up user IDs to usernames. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2853 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2854 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2855 * Borrowed this code from oscar_normalize. Added checking for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2856 * "if userid, get name before normalizing" |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2857 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2858 static const char *msim_normalize(const PurpleAccount *account, const char *str) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2859 static char normalized[BUF_LEN]; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2860 char *tmp1, *tmp2; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2861 int i, j; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2862 guint id; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2863 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2864 g_return_val_if_fail(str != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2865 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2866 if (msim_is_userid(str)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2867 /* Have user ID, we need to get their username first :) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2868 const char *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2869 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2870 /* If the account does not exist, we can't look up the user. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2871 if (!account || !account->gc) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2872 return str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2873 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2874 id = atol(str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2875 username = msim_uid2username_from_blist((PurpleAccount *)account, id); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2876 if (!username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2877 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2878 /* Note: manual lookup using msim_lookup_user() is a problem inside |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2879 * msim_normalize(), because msim_lookup_user() calls a callback function |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2880 * when the user information has been looked up, but msim_normalize() expects |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2881 * the result immediately. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2882 strncpy(normalized, str, BUF_LEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2883 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2884 strncpy(normalized, username, BUF_LEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2885 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2886 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2887 /* Have username. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2888 strncpy(normalized, str, BUF_LEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2889 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2890 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2891 /* Strip spaces. */ |
24894
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24853
diff
changeset
|
2892 for (i=0, j=0; normalized[j]; j++) { |
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24853
diff
changeset
|
2893 if (normalized[j] != ' ') |
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24853
diff
changeset
|
2894 normalized[i++] = normalized[j]; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2895 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2896 normalized[i] = '\0'; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2897 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2898 /* Lowercase and perform UTF-8 normalization. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2899 tmp1 = g_utf8_strdown(normalized, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2900 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2901 g_snprintf(normalized, sizeof(normalized), "%s", tmp2); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2902 g_free(tmp2); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2903 g_free(tmp1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2904 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2905 /* TODO: re-add caps and spacing back to what the user wanted. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2906 * User can format their own names, for example 'msimprpl' is shown |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2907 * as 'MsIm PrPl' in the official client. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2908 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2909 * TODO: file a ticket to add this enhancement. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2910 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2911 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2912 return normalized; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2913 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2914 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2915 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2916 * Return whether the buddy can be messaged while offline. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2917 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2918 * The protocol supports offline messages in just the same way as online |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2919 * messages. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2920 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2921 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2922 msim_offline_message(const PurpleBuddy *buddy) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2923 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2924 return TRUE; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2925 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2926 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2927 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2928 * Send raw data to the server, possibly with embedded NULs. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2929 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2930 * Used in prpl_info struct, so that plugins can have the most possible |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2931 * control of what is sent over the connection. Inside this prpl, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2932 * msim_send_raw() is used, since it sends NUL-terminated strings (easier). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2933 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2934 * @param gc PurpleConnection |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2935 * @param buf Buffer to send |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2936 * @param total_bytes Size of buffer to send |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2937 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2938 * @return Bytes successfully sent, or -1 on error. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2939 */ |
24743
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2940 /* |
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2941 * TODO: This needs to do non-blocking writes and use a watcher to check |
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2942 * when the fd is available to be written to. |
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2943 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2944 static int |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2945 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2946 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2947 int total_bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2948 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2949 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2950 g_return_val_if_fail(gc != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2951 g_return_val_if_fail(buf != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2952 g_return_val_if_fail(total_bytes >= 0, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2953 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2954 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2955 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2956 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2957 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2958 /* Loop until all data is sent, or a failure occurs. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2959 total_bytes_sent = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2960 do { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2961 int bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2962 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2963 bytes_sent = send(session->fd, buf + total_bytes_sent, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2964 total_bytes - total_bytes_sent, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2965 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2966 if (bytes_sent < 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2967 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2968 buf, g_strerror(errno)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2969 return total_bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2970 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2971 total_bytes_sent += bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2972 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2973 } while(total_bytes_sent < total_bytes); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2974 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2975 return total_bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2976 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2977 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2978 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2979 * Send raw data (given as a NUL-terminated string) to the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2980 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2981 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2982 * @param msg The raw data to send, in a NUL-terminated string. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2983 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2984 * @return TRUE if succeeded, FALSE if not. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2985 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2986 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2987 gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2988 msim_send_raw(MsimSession *session, const gchar *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2989 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2990 size_t len; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2991 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2992 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2993 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2994 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2995 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2996 len = strlen(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2997 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2998 return msim_send_really_raw(session->gc, msg, len) == len; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2999 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3000 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3001 static GHashTable * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3002 msim_get_account_text_table(PurpleAccount *unused) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3003 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3004 GHashTable *table; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3005 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3006 table = g_hash_table_new(g_str_hash, g_str_equal); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3007 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3008 g_hash_table_insert(table, "login_label", (gpointer)_("Email Address...")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3009 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3010 return table; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3011 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3012 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3013 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3014 * Callbacks called by Purple, to access this plugin. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3015 */ |
20057 | 3016 static PurplePluginProtocolInfo prpl_info = { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3017 /* options */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3018 OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3019 | OPT_PROTO_MAIL_CHECK, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3020 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3021 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3022 NULL, /* user_splits */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3023 NULL, /* protocol_options */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3024 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3025 msim_list_icon, /* list_icon */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3026 NULL, /* list_emblems */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3027 msim_status_text, /* status_text */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3028 msim_tooltip_text, /* tooltip_text */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3029 msim_status_types, /* status_types */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3030 msim_blist_node_menu, /* blist_node_menu */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3031 NULL, /* chat_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3032 NULL, /* chat_info_defaults */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3033 msim_login, /* login */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3034 msim_close, /* close */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3035 msim_send_im, /* send_im */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3036 NULL, /* set_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3037 msim_send_typing, /* send_typing */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3038 msim_get_info, /* get_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3039 msim_set_status, /* set_status */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3040 msim_set_idle, /* set_idle */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3041 NULL, /* change_passwd */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3042 msim_add_buddy, /* add_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3043 NULL, /* add_buddies */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3044 msim_remove_buddy, /* remove_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3045 NULL, /* remove_buddies */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3046 NULL, /* add_permit */ |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
3047 msim_add_deny, /* add_deny */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3048 NULL, /* rem_permit */ |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
3049 msim_rem_deny, /* rem_deny */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3050 NULL, /* set_permit_deny */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3051 NULL, /* join_chat */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3052 NULL, /* reject chat invite */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3053 NULL, /* get_chat_name */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3054 NULL, /* chat_invite */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3055 NULL, /* chat_leave */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3056 NULL, /* chat_whisper */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3057 NULL, /* chat_send */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3058 NULL, /* keepalive */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3059 NULL, /* register_user */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3060 NULL, /* get_cb_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3061 NULL, /* get_cb_away */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3062 NULL, /* alias_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3063 NULL, /* group_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3064 NULL, /* rename_group */ |
24853
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
3065 msim_buddy_free, /* buddy_free */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3066 NULL, /* convo_closed */ |
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
3067 msim_normalize, /* normalize */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3068 NULL, /* set_buddy_icon */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3069 NULL, /* remove_group */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3070 NULL, /* get_cb_real_name */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3071 NULL, /* set_chat_topic */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3072 NULL, /* find_blist_chat */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3073 NULL, /* roomlist_get_list */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3074 NULL, /* roomlist_cancel */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3075 NULL, /* roomlist_expand_category */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3076 NULL, /* can_receive_file */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3077 NULL, /* send_file */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3078 NULL, /* new_xfer */ |
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3079 msim_offline_message, /* offline_message */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3080 NULL, /* whiteboard_prpl_ops */ |
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3081 msim_send_really_raw, /* send_raw */ |
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3082 NULL, /* roomlist_room_serialize */ |
19712
eabc8a32b1e4
Fix up an apparently bad merge with the reserved fields here.
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
3083 NULL, /* unregister_user */ |
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3084 msim_send_attention, /* send_attention */ |
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3085 msim_attention_types, /* attention_types */ |
26062
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3086 sizeof(PurplePluginProtocolInfo), /* struct_size */ |
23112
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23111
diff
changeset
|
3087 msim_get_account_text_table, /* get_account_text_table */ |
26062
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3088 NULL, /* initiate_media */ |
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3089 NULL /* can_do_media */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3090 }; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3091 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3092 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3093 * Load the plugin. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3094 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3095 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3096 msim_load(PurplePlugin *plugin) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3097 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3098 /* If compiled to use RC4 from libpurple, check if it is really there. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3099 if (!purple_ciphers_find_cipher("rc4")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3100 purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3101 purple_notify_error(plugin, _("Missing Cipher"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3102 _("The RC4 cipher could not be found"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3103 _("Upgrade " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3104 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3105 "plugin will not be loaded.")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3106 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3107 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3108 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3109 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3110 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3111 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3112 * Called when friends have been imported to buddy list on server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3113 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3114 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
3115 msim_import_friends_cb(MsimSession *session, const MsimMessage *reply, gpointer user_data) |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3116 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3117 MsimMessage *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3118 gchar *completed; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3119 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3120 /* Check if the friends were imported successfully. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3121 body = msim_msg_get_dictionary(reply, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3122 g_return_if_fail(body != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3123 completed = msim_msg_get_string(body, "Completed"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3124 msim_msg_free(body); |
25168
27e6ab4ff554
This should fix a sporadic crash? The behavior before was clearly wrong--
Mark Doliner <mark@kingant.net>
parents:
25057
diff
changeset
|
3125 g_return_if_fail(completed != NULL); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3126 if (!g_str_equal(completed, "True")) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3127 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3128 purple_debug_info("msim_import_friends_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3129 "failed to import friends: %s", completed); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3130 purple_notify_error(session->account, _("Add friends from MySpace.com"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3131 _("Importing friends failed"), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3132 g_free(completed); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3133 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3134 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3135 g_free(completed); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3136 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3137 purple_debug_info("msim_import_friends_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3138 "added friends to server-side buddy list, requesting new contacts from server"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3139 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3140 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3141 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3142 /* TODO: show, X friends have been added */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3143 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3144 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3145 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3146 * Import friends from myspace.com. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3147 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3148 static void msim_import_friends(PurplePluginAction *action) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3149 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3150 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3151 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3152 gchar *group_name; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3153 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3154 gc = (PurpleConnection *)action->context; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3155 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3156 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3157 group_name = "MySpace Friends"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3158 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3159 g_return_if_fail(msim_send(session, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3160 "persist", MSIM_TYPE_INTEGER, 1, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3161 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3162 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3163 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3164 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3165 "uid", MSIM_TYPE_INTEGER, session->userid, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3166 "rid", MSIM_TYPE_INTEGER, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3167 msim_new_reply_callback(session, msim_import_friends_cb, NULL), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3168 "body", MSIM_TYPE_STRING, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3169 g_strdup_printf("GroupName=%s", group_name), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3170 NULL)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3171 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3172 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3173 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3174 * Actions menu for account. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3175 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3176 static GList * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3177 msim_actions(PurplePlugin *plugin, gpointer context) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3178 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3179 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3180 GList *menu; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3181 PurplePluginAction *act; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3182 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3183 gc = (PurpleConnection *)context; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3184 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3185 menu = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3186 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3187 #if 0 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3188 /* TODO: find out how */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3189 act = purple_plugin_action_new(_("Find people..."), msim_); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3190 menu = g_list_append(menu, act); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3191 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3192 act = purple_plugin_action_new(_("Change IM name..."), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3193 menu = g_list_append(menu, act); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3194 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3195 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3196 act = purple_plugin_action_new(_("Add friends from MySpace.com"), msim_import_friends); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3197 menu = g_list_append(menu, act); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3198 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3199 return menu; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3200 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3201 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3202 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3203 * Based on MSN's plugin info comments. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3204 */ |
19720
b2d213681176
Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <pidgin@unreliablesource.net>
parents:
19713
diff
changeset
|
3205 static PurplePluginInfo info = { |
23111
718a9c287839
Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23107
diff
changeset
|
3206 PURPLE_PLUGIN_MAGIC, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3207 PURPLE_MAJOR_VERSION, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3208 PURPLE_MINOR_VERSION, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3209 PURPLE_PLUGIN_PROTOCOL, /**< type */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3210 NULL, /**< ui_requirement */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3211 0, /**< flags */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3212 NULL, /**< dependencies */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3213 PURPLE_PRIORITY_DEFAULT, /**< priority */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3214 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3215 "prpl-myspace", /**< id */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3216 "MySpaceIM", /**< name */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3217 MSIM_PRPL_VERSION_STRING, /**< version */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3218 /** summary */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3219 "MySpaceIM Protocol Plugin", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3220 /** description */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3221 "MySpaceIM Protocol Plugin", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3222 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3223 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3224 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3225 msim_load, /**< load */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3226 NULL, /**< unload */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3227 NULL, /**< destroy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3228 NULL, /**< ui_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3229 &prpl_info, /**< extra_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3230 NULL, /**< prefs_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3231 msim_actions, /**< msim_actions */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3232 NULL, /**< reserved1 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3233 NULL, /**< reserved2 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3234 NULL, /**< reserved3 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3235 NULL /**< reserved4 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3236 }; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3237 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3238 #ifdef MSIM_SELF_TEST |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3239 /* |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3240 * Test functions. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3241 * Used to test or try out the internal workings of msimprpl. If you're reading |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3242 * this code for the first time, these functions can be instructive in learning |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3243 * how msimprpl is architected. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3244 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3245 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3246 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3247 * Test MsimMessage for basic functionality. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3248 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3249 static int |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3250 msim_test_msg(void) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3251 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3252 MsimMessage *msg, *msg_cloned, *msg2; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3253 GList *list; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3254 gchar *packed, *packed_expected, *packed_cloned; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3255 guint failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3256 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3257 failures = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3258 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3259 purple_debug_info("msim", "\n\nTesting MsimMessage\n"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3260 msg = msim_msg_new(NULL); /* Create a new, empty message. */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3261 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3262 /* 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
|
3263 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>
diff
changeset
|
3264 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3265 msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3266 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3267 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v52/xxx\\yyy")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3268 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3269 msim_msg_dump("msg debug str=%s\n", msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3270 packed = msim_msg_pack(msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3271 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3272 purple_debug_info("msim", "msg packed=%s\n", packed); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3273 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3274 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1" |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3275 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\"; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3276 |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3277 if (!g_str_equal(packed, packed_expected)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3278 purple_debug_info("msim", "!!!(%d), msim_msg_pack not what expected: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3279 ++failures, packed, packed_expected); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3280 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3281 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3282 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3283 msg_cloned = msim_msg_clone(msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3284 packed_cloned = msim_msg_pack(msg_cloned); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3285 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3286 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
|
3287 if (!g_str_equal(packed, packed_cloned)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3288 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>
diff
changeset
|
3289 ++failures, packed_cloned, packed); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3290 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3291 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3292 g_free(packed); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3293 g_free(packed_cloned); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3294 msim_msg_free(msg_cloned); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3295 msim_msg_free(msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3296 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3297 /* Try some of the more advanced functionality */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3298 list = NULL; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3299 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3300 list = g_list_prepend(list, "item3"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3301 list = g_list_prepend(list, "item2"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3302 list = g_list_prepend(list, "item1"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3303 list = g_list_prepend(list, "item0"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3304 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3305 msg = msim_msg_new(NULL); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3306 msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3307 msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3308 msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3309 msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3310 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3311 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3312 msim_msg_dump("msg with list=%s\n", msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3313 purple_debug_info("msim", "msg with list packed=%s\n", msim_msg_pack(msg)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3314 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3315 msg2 = msim_msg_new(NULL); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3316 msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3317 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3318 msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3319 purple_debug_info("msim", "msg with dict packed=%s\n", msim_msg_pack(msg2)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3320 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3321 msim_msg_free(msg2); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3322 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3323 return failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3324 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3325 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3326 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3327 * Test protocol-level escaping/unescaping. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3328 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3329 static int |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3330 msim_test_escaping(void) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3331 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3332 guint failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3333 gchar *raw, *escaped, *unescaped, *expected; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3334 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3335 failures = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3336 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3337 purple_debug_info("msim", "\n\nTesting escaping\n"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3338 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3339 raw = "hello/world\\hello/world"; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3340 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3341 escaped = msim_escape(raw); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3342 purple_debug_info("msim", "msim_test_escaping: raw=%s, escaped=%s\n", raw, escaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3343 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
|
3344 if (!g_str_equal(escaped, expected)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3345 purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3346 ++failures, escaped, expected); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3347 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3348 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3349 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3350 unescaped = msim_unescape(escaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3351 g_free(escaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3352 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
|
3353 if (!g_str_equal(raw, unescaped)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3354 purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3355 ++failures, raw, unescaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3356 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3357 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3358 return failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3359 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3360 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3361 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3362 msim_test_all(void) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3363 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3364 guint failures; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3365 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3366 failures = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3367 failures += msim_test_msg(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3368 failures += msim_test_escaping(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3369 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3370 if (failures) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3371 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3372 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3373 purple_debug_info("msim", "msim_test_all - all tests passed!\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3374 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3375 exit(0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3376 } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3377 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3378 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3379 #ifdef MSIM_CHECK_NEWER_VERSION |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3380 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3381 * Callback for when a currentversion.txt has been downloaded. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3382 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3383 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3384 msim_check_newer_version_cb(PurpleUtilFetchUrlData *url_data, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3385 gpointer user_data, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3386 const gchar *url_text, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3387 gsize len, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3388 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
|
3389 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3390 GKeyFile *keyfile; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3391 GError *error; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3392 GString *data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3393 gchar *newest_filever; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3394 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3395 if (!url_text) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3396 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3397 "got error: %s\n", error_message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3398 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3399 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3400 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3401 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3402 "url_text=%s\n", url_text ? url_text : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3403 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3404 /* Prepend [group] so that GKeyFile can parse it (requires a group). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3405 data = g_string_new(url_text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3406 purple_debug_info("msim", "data=%s\n", data->str |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3407 ? data->str : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3408 data = g_string_prepend(data, "[group]\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3409 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3410 purple_debug_info("msim", "data=%s\n", data->str |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3411 ? data->str : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3412 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3413 /* url_text is variable=data\n...†*/ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3414 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3415 /* Check FILEVER, 1.0.716.0. 716 is build, MSIM_CLIENT_VERSION */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3416 /* New (english) version can be downloaded from SETUPURL+SETUPFILE */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3417 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3418 error = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3419 keyfile = g_key_file_new(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3420 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3421 /* Default list seperator is ;, but currentversion.txt doesn't have |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3422 * these, so set to an unused character to avoid parsing problems. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3423 g_key_file_set_list_separator(keyfile, '\0'); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3424 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3425 g_key_file_load_from_data(keyfile, data->str, data->len, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3426 G_KEY_FILE_NONE, &error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3427 g_string_free(data, TRUE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3428 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3429 if (error != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3430 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3431 "couldn't parse, error: %d %d %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3432 error->domain, error->code, error->message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3433 g_error_free(error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3434 return; |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3435 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3436 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3437 gchar **ks; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3438 guint n; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3439 ks = g_key_file_get_keys(keyfile, "group", &n, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3440 purple_debug_info("msim", "n=%d\n", n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3441 guint i; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3442 for (i = 0; ks[i] != NULL; ++i) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3443 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3444 purple_debug_info("msim", "%d=%s\n", i, ks[i]); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3445 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3446 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3447 newest_filever = g_key_file_get_string(keyfile, "group", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3448 "FILEVER", &error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3449 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3450 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3451 "newest filever: %s\n", newest_filever ? |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3452 newest_filever : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3453 if (error != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3454 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3455 "error: %d %d %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3456 error->domain, error->code, error->message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3457 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
|
3458 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3459 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3460 g_key_file_free(keyfile); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3461 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3462 exit(0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3463 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3464 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3465 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3466 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3467 Handle a myim:addContact command, after username has been looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3468 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3469 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3470 msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3471 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3472 MsimMessage *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3473 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3474 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3475 body = msim_msg_get_dictionary(userinfo, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3476 username = msim_msg_get_string(body, "UserName"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3477 msim_msg_free(body); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3478 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3479 if (!username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3480 guint uid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3481 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3482 uid = msim_msg_get_integer(userinfo, "UserID"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3483 g_return_if_fail(uid != 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3484 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3485 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
|
3486 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3487 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3488 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3489 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3490 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
|
3491 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3492 |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3493 /* 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
|
3494 * 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
|
3495 * looked up if possible? */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3496 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3497 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3498 * Handle a myim:sendIM URI command, after username has been looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3499 */ |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3500 static void |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3501 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
|
3502 { |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3503 PurpleConversation *conv; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3504 MsimMessage *body; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3505 gchar *username; |
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 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
|
3508 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
|
3509 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
|
3510 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3511 if (!username) { |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3512 guint uid; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3513 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3514 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
|
3515 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
|
3516 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3517 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
|
3518 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3519 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3520 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3521 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
|
3522 if (!conv) { |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3523 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
|
3524 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
|
3525 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3526 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3527 /* 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
|
3528 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
|
3529 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3530 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
|
3531 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3532 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3533 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3534 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
|
3535 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3536 PurpleAccount *account; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3537 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3538 GList *l; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3539 gchar *uid_str, *cid_str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3540 guint uid, cid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3541 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3542 if (g_ascii_strcasecmp(proto, "myim")) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3543 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3544 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3545 /* Parameters are case-insensitive. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3546 uid_str = g_hash_table_lookup(params, "uid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3547 cid_str = g_hash_table_lookup(params, "cid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3548 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3549 uid = uid_str ? atol(uid_str) : 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3550 cid = cid_str ? atol(cid_str) : 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3551 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3552 /* Need a contact. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3553 g_return_val_if_fail(cid != 0, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3554 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3555 /* TODO: if auto=true, "Add all the people on this page to my IM List!", on |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3556 * http://collect.myspace.com/index.cfm?fuseaction=im.friendslist. Don't need a cid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3557 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3558 /* Convert numeric contact ID back to a string. Needed for looking up. Don't just |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3559 * directly use cid directly from parameters, because it might not be numeric. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3560 * It is trivial to change this to allow cID to be a username, but that's not how |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3561 * the official MySpaceIM client works, so don't provide that functionality. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3562 cid_str = g_strdup_printf("%d", cid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3563 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3564 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3565 /* Find our account with specified user id, or use first connected account if uid=0. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3566 account = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3567 l = purple_accounts_get_all(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3568 while (l) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3569 if (purple_account_is_connected(l->data) && |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3570 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3571 account = l->data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3572 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3573 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3574 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
|
3575 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3576 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3577 if (!account) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3578 purple_notify_error(NULL, _("myim URL handler"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3579 _("No suitable MySpaceIM account could be found to open this myim URL."), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3580 _("Enable the proper MySpaceIM account and try again.")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3581 g_free(cid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3582 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3583 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3584 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3585 session = (MsimSession *)account->gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3586 g_return_val_if_fail(session != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3587 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3588 /* Lookup userid to username. TODO: push this down, to IM sending/contact |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3589 * adding functions. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3590 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3591 /* myim:sendIM?uID=USERID&cID=CONTACTID */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3592 if (!g_ascii_strcasecmp(cmd, "sendIM")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3593 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_sendIM_cb, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3594 g_free(cid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3595 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3596 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3597 /* myim:addContact?uID=USERID&cID=CONTACTID */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3598 } else if (!g_ascii_strcasecmp(cmd, "addContact")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3599 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_addContact_cb, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3600 g_free(cid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3601 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3602 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3603 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3604 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
|
3605 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3606 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3607 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3608 * Initialize plugin. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3609 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3610 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3611 init_plugin(PurplePlugin *plugin) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3612 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3613 #ifdef MSIM_SELF_TEST |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3614 msim_test_all(); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3615 exit(0); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3616 #endif /* MSIM_SELF_TEST */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3617 |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3618 PurpleAccountOption *option; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3619 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
|
3620 |
19598
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3621 #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
|
3622 /* 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
|
3623 * 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
|
3624 * 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
|
3625 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
|
3626 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
|
3627 "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
|
3628 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
|
3629 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
|
3630 #endif |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3631 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3632 /* TODO: default to automatically try different ports. Make the user be |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3633 * able to set the first port to try (like LastConnectedPort in Windows client). */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3634 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3635 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3636 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3637 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3638 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3639 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3640 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3641 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>
diff
changeset
|
3642 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3643 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3644 option = purple_account_option_bool_new(_("Show headline in status text"), "show_headline", TRUE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3645 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3646 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3647 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3648 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS |
19733
0844b0638f0b
The 'Send Emoticons' preferences (which is only configurable if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined) defaults to TRUE when used, a reasonable default. The preference, if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined, should do the same.
Evan Schoenberg <evan.s@dreskin.net>
parents:
19720
diff
changeset
|
3649 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", TRUE); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3650 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3651 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3652 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3653 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3654 option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3655 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3656 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3657 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>
diff
changeset
|
3658 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3659 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3660 |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3661 /* Code below only runs once. Based on oscar.c's oscar_init(). */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3662 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
|
3663 return; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3664 |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3665 initialized = TRUE; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3666 |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3667 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
|
3668 PURPLE_CALLBACK(msim_uri_handler), NULL); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3669 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3670 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3671 PURPLE_INIT_PLUGIN(myspace, init_plugin, info); |