Mercurial > pidgin.yaz
annotate libpurple/protocols/myspace/myspace.c @ 28233:b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
normal IMs. This can cause problems if MySpace ever sends an uknown
message type and we try to treat it as an IM.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 13 Aug 2009 00:01:21 +0000 |
parents | f541583e31bd |
children | e4b0bf56667f |
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 |
27237
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
522 /* |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
523 * TODO: This define is stolen from oscar.h. |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
524 * It's also in yahoo.h. |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
525 * It should be in libpurple/util.c |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
526 */ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
527 #define msim_put32(buf, data) ( \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
528 (*((buf)) = (unsigned char)((data)>>24)&0xff), \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
529 (*((buf)+1) = (unsigned char)((data)>>16)&0xff), \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
530 (*((buf)+2) = (unsigned char)((data)>>8)&0xff), \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
531 (*((buf)+3) = (unsigned char)(data)&0xff), \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
532 4) |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
533 |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
534 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
535 * Compute the base64'd login challenge response based on username, password, nonce, and IPs. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
536 * |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
537 * @param nonce The base64 encoded nonce ('nc') field from the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
538 * @param email User's email address (used as login name). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
539 * @param password User's cleartext password. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
540 * @param response_len Will be written with response length. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
541 * |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
542 * @return Binary login challenge response, ready to send to the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
543 * Must be g_free()'d when finished. NULL if error. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
544 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
545 static gchar * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
546 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE], |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
547 const gchar *email, const gchar *password, guint *response_len) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
548 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
549 PurpleCipherContext *key_context; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
550 PurpleCipher *sha1; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
551 PurpleCipherContext *rc4; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
552 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
553 guchar hash_pw[HASH_SIZE]; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
554 guchar key[HASH_SIZE]; |
24883
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
555 gchar *password_truncated, *password_utf16le, *password_utf8_lc; |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
556 GString *data; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
557 guchar *data_out; |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
558 size_t data_out_len; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
559 gsize conv_bytes_read, conv_bytes_written; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
560 GError *conv_error; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
561 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
562 int i; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
563 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
564 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
565 g_return_val_if_fail(nonce != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
566 g_return_val_if_fail(email != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
567 g_return_val_if_fail(password != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
568 g_return_val_if_fail(response_len != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
569 |
24883
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
570 /* |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
571 * Truncate password to 10 characters. Their "change password" |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
572 * web page doesn't let you enter more than 10 characters, but you |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
573 * can enter more than 10 when logging in on myspace.com and they |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
574 * truncate it. |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
575 */ |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
576 password_truncated = g_strndup(password, 10); |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
577 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
578 /* Convert password to lowercase (required for passwords containing |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
579 * uppercase characters). MySpace passwords are lowercase, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
580 * see ticket #2066. */ |
24883
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
581 password_utf8_lc = g_utf8_strdown(password_truncated, -1); |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
582 g_free(password_truncated); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
583 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
584 /* Convert ASCII password to UTF16 little endian */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
585 purple_debug_info("msim", "converting password to UTF-16LE\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
586 conv_error = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
587 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
588 &conv_bytes_read, &conv_bytes_written, &conv_error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
589 g_free(password_utf8_lc); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
590 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
591 if (conv_error != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
592 purple_debug_error("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
593 "g_convert password UTF8->UTF16LE failed: %s", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
594 conv_error->message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
595 g_error_free(conv_error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
596 return NULL; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
597 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
598 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
599 /* Compute password hash */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
600 purple_cipher_digest_region("sha1", (guchar *)password_utf16le, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
601 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
602 g_free(password_utf16le); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
603 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
604 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
605 purple_debug_info("msim", "pwhash = "); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
606 for (i = 0; i < sizeof(hash_pw); i++) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
607 purple_debug_info("msim", "%.2x ", hash_pw[i]); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
608 purple_debug_info("msim", "\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
609 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
610 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
611 /* key = sha1(sha1(pw) + nonce2) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
612 sha1 = purple_ciphers_find_cipher("sha1"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
613 key_context = purple_cipher_context_new(sha1, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
614 purple_cipher_context_append(key_context, hash_pw, HASH_SIZE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
615 purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
616 purple_cipher_context_digest(key_context, sizeof(key), key, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
617 purple_cipher_context_destroy(key_context); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
618 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
619 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
620 purple_debug_info("msim", "key = "); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
621 for (i = 0; i < sizeof(key); i++) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
622 purple_debug_info("msim", "%.2x ", key[i]); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
623 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
624 purple_debug_info("msim", "\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
625 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
626 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
627 rc4 = purple_cipher_context_new_by_name("rc4", NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
628 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
629 /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
630 * but only first 0x10 used for the RC4 key. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
631 purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
632 purple_cipher_context_set_key(rc4, key); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
633 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
634 /* rc4 encrypt: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
635 * nonce1+email+IP list */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
636 |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
637 data = g_string_new(NULL); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
638 g_string_append_len(data, nonce, NONCE_SIZE); |
27237
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
639 |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
640 /* Include the null terminator */ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
641 g_string_append_len(data, email, strlen(email) + 1); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
642 |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
643 while (data->len % 4 != 0) |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
644 g_string_append_c(data, 0xfb); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
645 |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
646 #ifdef SEND_OUR_IP_ADDRESSES |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
647 /* TODO: Obtain IPs of network interfaces instead of using this hardcoded value */ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
648 g_string_set_size(data, data->len + 4); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
649 msim_put32(data->str + data->len - 4, MSIM_LOGIN_IP_LIST_LEN); |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
650 g_string_append_len(data, MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN); |
27237
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
651 #else |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
652 g_string_set_size(data, data->len + 4); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
653 msim_put32(data->str + data->len - 4, 0); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
654 #endif /* !SEND_OUR_IP_ADDRESSES */ |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
655 |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
656 data_out = g_new0(guchar, data->len); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
657 |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
658 purple_cipher_context_encrypt(rc4, (const guchar *)data->str, |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
659 data->len, data_out, &data_out_len); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
660 purple_cipher_context_destroy(rc4); |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
661 |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
662 if (data_out_len != data->len) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
663 purple_debug_info("msim", "msim_compute_login_response: " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
664 "data length mismatch: %" G_GSIZE_FORMAT " != %" |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
665 G_GSIZE_FORMAT "\n", data_out_len, data->len); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
666 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
667 |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
668 g_string_free(data, TRUE); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
669 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
670 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
671 purple_debug_info("msim", "response=<%s>\n", data_out); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
672 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
673 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
674 *response_len = data_out_len; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
675 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
676 return (gchar *)data_out; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
677 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
678 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
679 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
680 * Process a login challenge, sending a response. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
681 * |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
682 * @param session |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
683 * @param msg Login challenge message. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
684 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
685 * @return TRUE if successful, FALSE if not |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
686 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
687 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
688 msim_login_challenge(MsimSession *session, MsimMessage *msg) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
689 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
690 PurpleAccount *account; |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
691 gchar *response; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
692 guint response_len; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
693 gchar *nc; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
694 gsize nc_len; |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
695 gboolean ret; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
696 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
697 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
698 g_return_val_if_fail(msg != NULL, FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
699 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
700 g_return_val_if_fail(msim_msg_get_binary(msg, "nc", &nc, &nc_len), FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
701 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
702 account = session->account; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
703 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
704 g_return_val_if_fail(account != NULL, FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
705 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
706 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
707 |
22475
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
708 purple_debug_info("msim", "nc is %" G_GSIZE_FORMAT |
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
709 " bytes, decoded\n", nc_len); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
710 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
711 if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) { |
22475
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
712 purple_debug_info("msim", "bad nc length: %" G_GSIZE_MODIFIER |
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
713 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH); |
21358 | 714 purple_connection_error_reason (session->gc, |
715 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
716 _("Unexpected challenge length from server")); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
717 return FALSE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
718 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
719 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
720 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
721 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
722 response_len = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
723 response = msim_compute_login_response(nc, account->username, account->password, &response_len); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
724 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
725 g_free(nc); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
726 |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
727 ret = msim_send(session, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
728 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
729 /* This is actually user's email address. */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
730 "username", MSIM_TYPE_STRING, g_strdup(account->username), |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
731 /* GString will be freed in msim_msg_free() in msim_send(). */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
732 "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
733 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
734 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
735 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
736 "reconn", MSIM_TYPE_INTEGER, 0, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
737 "status", MSIM_TYPE_INTEGER, 100, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
738 "id", MSIM_TYPE_INTEGER, 1, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
739 NULL); |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
740 |
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
741 g_free(response); |
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
742 |
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
743 return ret; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
744 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
745 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
746 /** |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
747 * Process unrecognized information. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
748 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
749 * @param session |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
750 * @param msg An MsimMessage that was unrecognized, or NULL. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
751 * @param note Information on what was unrecognized, or NULL. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
752 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
753 void |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
754 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
755 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
756 /* TODO: Some more context, outwardly equivalent to a backtrace, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
757 * for helping figure out what this msg is for. What was going on? |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
758 * But not too much information so that a user |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
759 * posting this dump reveals confidential information. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
760 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
761 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
762 /* TODO: dump unknown msgs to file, so user can send them to me |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
763 * if they wish, to help add support for new messages (inspired |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
764 * by Alexandr Shutko, who maintains OSCAR protocol documentation). |
22156 | 765 * |
766 * Filed enhancement ticket for libpurple as #4688. | |
767 */ | |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
768 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
769 purple_debug_info("msim", "Unrecognized data on account for %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
770 (session && session->account && session->account->username) ? |
19353
af0e77c44667
MySpace added a new field, LastImageUpdated. Save it in MsimUser.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19352
diff
changeset
|
771 session->account->username : "(NULL)"); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
772 if (note) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
773 purple_debug_info("msim", "(Note: %s)\n", note); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
774 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
775 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
776 if (msg) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
777 msim_msg_dump("Unrecognized message dump: %s\n", msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
778 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
779 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
780 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
781 /** Called when the session key arrives to check whether the user |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
782 * has a username, and set one if desired. */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
783 static gboolean |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
784 msim_is_username_set(MsimSession *session, MsimMessage *msg) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
785 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
786 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
787 g_return_val_if_fail(msg != NULL, FALSE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
788 g_return_val_if_fail(session->gc != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
789 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
790 session->sesskey = msim_msg_get_integer(msg, "sesskey"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
791 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
792 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
793 /* What is proof? Used to be uid, but now is 52 base64'd bytes... */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
794 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
795 /* Comes with: proof,profileid,userid,uniquenick -- all same values |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
796 * some of the time, but can vary. This is our own user ID. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
797 session->userid = msim_msg_get_integer(msg, "userid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
798 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
799 /* Save uid to account so this account can be looked up by uid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
800 purple_account_set_int(session->account, "uid", session->userid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
801 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
802 /* Not sure what profileid is used for. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
803 if (msim_msg_get_integer(msg, "profileid") != session->userid) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
804 msim_unrecognized(session, msg, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
805 "Profile ID didn't match user ID, don't know why"); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
806 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
807 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
808 /* We now know are our own username, only after we're logged in.. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
809 * which is weird, but happens because you login with your email |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
810 * address and not username. Will be freed in msim_session_destroy(). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
811 session->username = msim_msg_get_string(msg, "uniquenick"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
812 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
813 /* If user lacks a username, help them get one. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
814 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
815 purple_debug_info("msim_is_username_set", "no username is set\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
816 purple_request_yes_no(session->gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
817 _("MySpaceIM - No Username Set"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
818 _("You appear to have no MySpace username."), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
819 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
820 0, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
821 session->account, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
822 NULL, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
823 NULL, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
824 session->gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
825 G_CALLBACK(msim_set_username_cb), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
826 G_CALLBACK(msim_do_not_set_username_cb)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
827 purple_debug_info("msim_is_username_set","'username not set' alert prompted\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
828 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
829 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
830 return TRUE; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
831 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
832 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
833 #ifdef MSIM_USE_KEEPALIVE |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
834 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
835 * Check if the connection is still alive, based on last communication. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
836 */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
837 static gboolean |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
838 msim_check_alive(gpointer data) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
839 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
840 MsimSession *session; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
841 time_t delta; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
842 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
843 session = (MsimSession *)data; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
844 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
845 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
846 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
847 delta = time(NULL) - session->last_comm; |
24630
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
848 |
22156 | 849 /* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
850 if (delta >= MSIM_KEEPALIVE_INTERVAL) { |
24630
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
851 purple_debug_info("msim", |
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
852 "msim_check_alive: %zu > interval of %d, presumed dead\n", |
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
853 delta, MSIM_KEEPALIVE_INTERVAL); |
22156 | 854 purple_connection_error_reason(session->gc, |
24630
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
855 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
856 _("Lost connection with server")); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
857 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
858 return FALSE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
859 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
860 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
861 return TRUE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
862 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
863 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
864 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
865 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
866 * Handle mail reply checks. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
867 */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
868 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
869 msim_check_inbox_cb(MsimSession *session, const MsimMessage *reply, gpointer data) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
870 { |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
871 MsimMessage *body; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
872 guint old_inbox_status; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
873 guint i, n; |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
874 /* Information for each new inbox message type. */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
875 static struct |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
876 { |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
877 const gchar *key; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
878 guint bit; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
879 const gchar *url; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
880 const gchar *text; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
881 } message_types[] = { |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
882 { "Mail", MSIM_INBOX_MAIL, "http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox", NULL }, |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
883 { "BlogComment", MSIM_INBOX_BLOG_COMMENT, "http://blog.myspace.com/index.cfm?fuseaction=blog", NULL }, |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
884 { "ProfileComment", MSIM_INBOX_PROFILE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL }, |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
885 { "FriendRequest", MSIM_INBOX_FRIEND_REQUEST, "http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests", NULL }, |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
886 { "PictureComment", MSIM_INBOX_PICTURE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
887 }; |
25891
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
888 const gchar *froms[G_N_ELEMENTS(message_types) + 1] = { "" }, |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
889 *tos[G_N_ELEMENTS(message_types) + 1] = { "" }, |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
890 *urls[G_N_ELEMENTS(message_types) + 1] = { "" }, |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
891 *subjects[G_N_ELEMENTS(message_types) + 1] = { "" }; |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
892 |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
893 g_return_if_fail(reply != NULL); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
894 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
895 /* Can't write _()'d strings in array initializers. Workaround. */ |
25891
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
896 /* khc: then use N_() in the array initializer and use _() when they are |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
897 used */ |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
898 message_types[0].text = _("New mail messages"); |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
899 message_types[1].text = _("New blog comments"); |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
900 message_types[2].text = _("New profile comments"); |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
901 message_types[3].text = _("New friend requests!"); |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
902 message_types[4].text = _("New picture comments"); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
903 |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
904 body = msim_msg_get_dictionary(reply, "body"); |
21758
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
905 |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
906 if (body == NULL) |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
907 return; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
908 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
909 old_inbox_status = session->inbox_status; |
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 = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
912 |
25891
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
913 for (i = 0; i < G_N_ELEMENTS(message_types); ++i) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
914 const gchar *key; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
915 guint bit; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
916 |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
917 key = message_types[i].key; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
918 bit = message_types[i].bit; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
919 |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
920 if (msim_msg_get(body, key)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
921 /* Notify only on when _changes_ from no mail -> has mail |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
922 * (edge triggered) */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
923 if (!(session->inbox_status & bit)) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
924 purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
925 key ? key : "(NULL)", n); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
926 |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
927 subjects[n] = message_types[i].text; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
928 froms[n] = _("MySpace"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
929 tos[n] = session->username; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
930 /* TODO: append token, web challenge, so automatically logs in. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
931 * Would also need to free strings because they won't be static |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
932 */ |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
933 urls[n] = message_types[i].url; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
934 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
935 ++n; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
936 } else { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
937 purple_debug_info("msim", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
938 "msim_check_inbox_cb: already notified of %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
939 key ? key : "(NULL)"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
940 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
941 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
942 session->inbox_status |= bit; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
943 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
944 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
945 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
946 if (n) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
947 purple_debug_info("msim", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
948 "msim_check_inbox_cb: notifying of %d\n", n); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
949 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
950 /* TODO: free strings with callback _if_ change to dynamic (w/ token) */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
951 purple_notify_emails(session->gc, /* handle */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
952 n, /* count */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
953 TRUE, /* detailed */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
954 subjects, froms, tos, urls, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
955 NULL, /* PurpleNotifyCloseCallback cb */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
956 NULL); /* gpointer user_data */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
957 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
958 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
959 |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
960 msim_msg_free(body); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
961 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
962 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
963 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
964 * Send request to check if there is new mail. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
965 */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
966 static gboolean |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
967 msim_check_inbox(gpointer data) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
968 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
969 MsimSession *session; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
970 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
971 session = (MsimSession *)data; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
972 |
21758
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
973 if (!MSIM_SESSION_VALID(session)) { |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
974 purple_debug_info("msim", "msim_check_inbox: session invalid, stopping the mail check.\n"); |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
975 return FALSE; |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
976 } |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
977 |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
978 purple_debug_info("msim", "msim_check_inbox: checking mail\n"); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
979 g_return_val_if_fail(msim_send(session, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
980 "persist", MSIM_TYPE_INTEGER, 1, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
981 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
982 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
983 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
984 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
985 "uid", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
986 "rid", MSIM_TYPE_INTEGER, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
987 msim_new_reply_callback(session, msim_check_inbox_cb, NULL), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
988 "body", MSIM_TYPE_STRING, g_strdup(""), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
989 NULL), TRUE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
990 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
991 /* Always return true, so that we keep checking for mail. */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
992 return TRUE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
993 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
994 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
995 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
996 * Add contact from server to buddy list, after looking up username. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
997 * Callback from msim_add_contact_from_server(). |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
998 * |
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
999 * @param data An MsimMessage * of the contact information. Will be freed. |
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1000 */ |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1001 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
1002 msim_add_contact_from_server_cb(MsimSession *session, const MsimMessage *user_lookup_info, gpointer data) |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1003 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1004 MsimMessage *contact_info, *user_lookup_info_body; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1005 PurpleGroup *group; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1006 PurpleBuddy *buddy; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1007 MsimUser *user; |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1008 gchar *username, *group_name, *display_name; |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1009 guint uid, visibility; |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1010 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1011 contact_info = (MsimMessage *)data; |
22475
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
1012 purple_debug_info("msim_add_contact_from_server_cb", "contact_info addr=%p\n", contact_info); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1013 uid = msim_msg_get_integer(contact_info, "ContactID"); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1014 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1015 if (!user_lookup_info) { |
22159 | 1016 username = g_strdup(msim_uid2username_from_blist(session->account, uid)); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1017 display_name = NULL; |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1018 g_return_if_fail(username != NULL); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1019 } else { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1020 user_lookup_info_body = msim_msg_get_dictionary(user_lookup_info, "body"); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1021 username = msim_msg_get_string(user_lookup_info_body, "UserName"); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1022 display_name = msim_msg_get_string(user_lookup_info_body, "DisplayName"); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1023 msim_msg_free(user_lookup_info_body); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1024 g_return_if_fail(username != NULL); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1025 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1026 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1027 purple_debug_info("msim_add_contact_from_server_cb", |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1028 "*** about to add/update username=%s\n", username); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1029 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1030 /* 1. Creates a new group, or gets existing group if it exists (or so |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1031 * the documentation claims). */ |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1032 group_name = msim_msg_get_string(contact_info, "GroupName"); |
22985
882af25a8edf
Fix handling of empty groups in MySpace. Fixes #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22982
diff
changeset
|
1033 if (!group_name || (*group_name == '\0')) { |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1034 g_free(group_name); |
22982
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1035 group_name = g_strdup(_("IM Friends")); |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1036 purple_debug_info("myspace", "No GroupName specified, defaulting to '%s'.\n", group_name); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1037 } |
22982
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1038 group = purple_find_group(group_name); |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1039 if (!group) { |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1040 group = purple_group_new(group_name); |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1041 /* Add group to beginning. See #2752. */ |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1042 purple_blist_add_group(group, NULL); |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1043 } |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1044 g_free(group_name); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1045 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1046 visibility = msim_msg_get_integer(contact_info, "Visibility"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1047 if (visibility == 2) { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1048 /* This buddy is blocked (and therefore not on our buddy list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1049 purple_privacy_deny_add(session->account, username, TRUE); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1050 msim_msg_free(contact_info); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1051 g_free(username); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1052 g_free(display_name); |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1053 return; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1054 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1055 |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1056 /* 2. Get or create buddy */ |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1057 buddy = purple_find_buddy(session->account, username); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1058 if (!buddy) { |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1059 purple_debug_info("msim_add_contact_from_server_cb", |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1060 "creating new buddy: %s\n", username); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1061 buddy = purple_buddy_new(session->account, username, NULL); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1062 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1063 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1064 /* TODO: use 'Position' in contact_info to take into account where buddy is */ |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1065 purple_blist_add_buddy(buddy, NULL, group, NULL /* insertion point */); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1066 |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1067 if (strtol(username, NULL, 10) == uid) { |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1068 /* |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1069 * This user has not set their username! Set their server |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1070 * alias to their display name so that we don't see a bunch |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1071 * of numbers in the buddy list. |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1072 */ |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1073 if (display_name != NULL) { |
25378
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1074 purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1075 serv_got_alias(session->gc, username, display_name); |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1076 } else { |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1077 serv_got_alias(session->gc, username, |
25378
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1078 purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName")); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1079 } |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1080 } |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1081 g_free(display_name); |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1082 |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1083 /* 3. Update buddy information */ |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1084 user = msim_get_user_from_buddy(buddy, TRUE); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1085 |
24632
128a77f3b3c4
Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents:
24631
diff
changeset
|
1086 user->id = uid; |
128a77f3b3c4
Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents:
24631
diff
changeset
|
1087 /* Keep track of the user ID across sessions */ |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1088 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", uid); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1089 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1090 /* Stores a few fields in the MsimUser, relevant to the buddy itself. |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1091 * AvatarURL, Headline, ContactID. */ |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1092 msim_store_user_info(session, contact_info, NULL); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1093 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1094 /* TODO: other fields, store in 'user' */ |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1095 msim_msg_free(contact_info); |
22226
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1096 |
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1097 g_free(username); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1098 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1099 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1100 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1101 * Add first ContactID in contact_info to buddy's list. Used to add |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1102 * server-side buddies to client-side list. |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1103 * |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1104 * @return TRUE if added. |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1105 */ |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1106 static gboolean |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1107 msim_add_contact_from_server(MsimSession *session, MsimMessage *contact_info) |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1108 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1109 guint uid; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1110 const gchar *username; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1111 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1112 uid = msim_msg_get_integer(contact_info, "ContactID"); |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1113 g_return_val_if_fail(uid != 0, FALSE); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1114 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1115 /* Lookup the username, since NickName and IMName is unreliable */ |
22159 | 1116 username = msim_uid2username_from_blist(session->account, uid); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1117 if (!username) { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1118 gchar *uid_str; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1119 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1120 uid_str = g_strdup_printf("%d", uid); |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1121 purple_debug_info("msim_add_contact_from_server", |
22475
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
1122 "contact_info addr=%p\n", contact_info); |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1123 msim_lookup_user(session, uid_str, msim_add_contact_from_server_cb, (gpointer)msim_msg_clone(contact_info)); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1124 g_free(uid_str); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1125 } else { |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1126 msim_add_contact_from_server_cb(session, NULL, (gpointer)msim_msg_clone(contact_info)); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1127 } |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1128 |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1129 /* Say that the contact was added, even if we're still looking up |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1130 * their username. */ |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1131 return TRUE; |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1132 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1133 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1134 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1135 * Called when contact list is received from server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1136 */ |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1137 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
1138 msim_got_contact_list(MsimSession *session, const MsimMessage *reply, gpointer user_data) |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1139 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1140 MsimMessage *body, *body_node; |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1141 gchar *msg; |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1142 guint buddy_count; |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1143 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1144 body = msim_msg_get_dictionary(reply, "body"); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1145 |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1146 buddy_count = 0; |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1147 |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1148 for (body_node = body; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1149 body_node != NULL; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1150 body_node = msim_msg_get_next_element_node(body_node)) |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1151 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1152 MsimMessageElement *elem; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1153 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1154 elem = (MsimMessageElement *)body_node->data; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1155 |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
1156 if (g_str_equal(elem->name, "ContactID")) |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1157 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1158 /* Will look for first contact in body_node */ |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1159 if (msim_add_contact_from_server(session, body_node)) { |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1160 ++buddy_count; |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1161 } |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1162 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1163 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1164 |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1165 switch (GPOINTER_TO_UINT(user_data)) { |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1166 case MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS: |
23334
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
diff
changeset
|
1167 msg = g_strdup_printf(ngettext("%d buddy was added or updated from the server (including buddies already on the server-side list)", |
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
diff
changeset
|
1168 "%d buddies were added or updated from the server (including buddies already on the server-side list)", |
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
diff
changeset
|
1169 buddy_count), |
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
diff
changeset
|
1170 buddy_count); |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1171 purple_notify_info(session->account, _("Add contacts from server"), msg, NULL); |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1172 g_free(msg); |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1173 break; |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1174 |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1175 case MSIM_CONTACT_LIST_IMPORT_TOP_FRIENDS: |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1176 /* TODO */ |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1177 break; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1178 |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1179 case MSIM_CONTACT_LIST_INITIAL_FRIENDS: |
25057
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
1180 /* The session is now set up, ready to be connected. This emits the |
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
1181 * signedOn signal, so clients can now do anything with msimprpl, and |
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
1182 * we're ready for it (session key, userid, username all setup). */ |
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
1183 purple_connection_update_progress(session->gc, _("Connected"), 3, 4); |
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
1184 purple_connection_set_state(session->gc, PURPLE_CONNECTED); |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1185 break; |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1186 } |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1187 |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1188 msim_msg_free(body); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1189 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1190 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1191 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1192 * Get contact list, calling msim_got_contact_list() with |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1193 * what_to_do_after as user_data gpointer. |
24735 | 1194 * |
1195 * @param what_to_do_after should be one of the MSIM_CONTACT_LIST_* #defines. | |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1196 */ |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1197 static gboolean |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1198 msim_get_contact_list(MsimSession *session, int what_to_do_after) |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1199 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1200 return msim_send(session, |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1201 "persist", MSIM_TYPE_INTEGER, 1, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1202 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1203 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1204 "dsn", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_DSN, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1205 "lid", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_LID, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1206 "uid", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1207 "rid", MSIM_TYPE_INTEGER, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1208 msim_new_reply_callback(session, msim_got_contact_list, GUINT_TO_POINTER(what_to_do_after)), |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1209 "body", MSIM_TYPE_STRING, g_strdup(""), |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1210 NULL); |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1211 } |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1212 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1213 /** Called after username is set, if necessary and we're open for business. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1214 gboolean msim_we_are_logged_on(MsimSession *session) |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1215 { |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1216 MsimMessage *body; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1217 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1218 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1219 |
24734
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24732
diff
changeset
|
1220 /* Set display name to username (otherwise will show email address) */ |
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24732
diff
changeset
|
1221 purple_connection_set_display_name(session->gc, session->username); |
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24732
diff
changeset
|
1222 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1223 body = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1224 "UserID", MSIM_TYPE_INTEGER, session->userid, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1225 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1226 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1227 /* Request IM info about ourself. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1228 msim_send(session, |
24744
e5f8d9ba84db
I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents:
24743
diff
changeset
|
1229 "persist", MSIM_TYPE_INTEGER, 1, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1230 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24745
d7fad2c0cf7c
Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents:
24744
diff
changeset
|
1231 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1232 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1233 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1234 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
24745
d7fad2c0cf7c
Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents:
24744
diff
changeset
|
1235 "UserID", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1236 "body", MSIM_TYPE_DICTIONARY, body, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1237 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1238 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1239 /* Request MySpace info about ourself. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1240 msim_send(session, |
24744
e5f8d9ba84db
I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents:
24743
diff
changeset
|
1241 "persist", MSIM_TYPE_INTEGER, 1, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1242 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24745
d7fad2c0cf7c
Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents:
24744
diff
changeset
|
1243 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1244 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1245 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1246 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1247 "body", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1248 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1249 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1250 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1251 /* TODO: set blocklist */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1252 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1253 /* Notify servers of our current status. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1254 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1255 msim_set_status(session->account, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1256 purple_account_get_active_status(session->account)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1257 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1258 /* TODO: setinfo */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1259 /* |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1260 body = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1261 "TotalFriends", MSIM_TYPE_INTEGER, 666, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1262 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1263 msim_send(session, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1264 "setinfo", MSIM_TYPE_BOOLEAN, TRUE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1265 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1266 "info", MSIM_TYPE_DICTIONARY, body, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1267 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1268 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1269 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1270 /* Disable due to problems with timeouts. TODO: fix. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1271 #ifdef MSIM_USE_KEEPALIVE |
25861
7f552614ec8a
applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents:
25168
diff
changeset
|
1272 purple_timeout_add_seconds(MSIM_KEEPALIVE_INTERVAL_CHECK, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1273 (GSourceFunc)msim_check_alive, session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1274 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1275 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1276 /* Check mail if they want to. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1277 if (purple_account_get_check_mail(session->account)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1278 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1279 (GSourceFunc)msim_check_inbox, session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1280 msim_check_inbox(session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1281 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1282 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1283 msim_get_contact_list(session, MSIM_CONTACT_LIST_INITIAL_FRIENDS); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1284 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1285 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1286 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1287 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1288 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1289 * Record the client version in the buddy list, from an incoming message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1290 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1291 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1292 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1293 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1294 gchar *username, *cv; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1295 gboolean ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1296 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1297 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1298 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1299 cv = msim_msg_get_string(msg, "cv"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1300 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1301 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1302 if (!cv) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1303 /* No client version to record, don't worry about it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1304 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1305 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1306 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1307 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1308 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1309 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1310 if (user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1311 user->client_cv = atol(cv); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1312 ret = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1313 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1314 ret = FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1315 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1316 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1317 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1318 g_free(cv); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1319 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1320 return ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1321 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1322 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1323 #ifdef MSIM_SEND_CLIENT_VERSION |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1324 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1325 * Send our client version to another unofficial client that understands it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1326 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1327 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1328 msim_send_unofficial_client(MsimSession *session, gchar *username) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1329 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1330 gchar *our_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1331 gboolean ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1332 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1333 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1334 PURPLE_MAJOR_VERSION, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1335 PURPLE_MINOR_VERSION, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1336 PURPLE_MICRO_VERSION, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1337 MSIM_PRPL_VERSION_STRING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1338 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1339 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1340 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1341 return ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1342 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1343 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1344 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1345 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1346 * Process incoming status messages. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1347 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1348 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1349 * @param msg Status update message. Caller frees. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1350 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1351 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1352 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1353 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1354 msim_incoming_status(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1355 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1356 PurpleBuddyList *blist; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1357 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1358 GList *list; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1359 gchar *status_headline, *status_headline_escaped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1360 gint status_code, purple_status_code; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1361 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1362 gchar *unrecognized_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1363 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1364 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1365 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1366 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1367 /* Helpfully looked up by msim_incoming_resolve() for us. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1368 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1369 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1370 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1371 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1372 gchar *ss; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1373 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1374 ss = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1375 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1376 "msim_status: updating status for <%s> to <%s>\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1377 username, ss ? ss : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1378 g_free(ss); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1379 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1380 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1381 /* Example fields: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1382 * |s|0|ss|Offline |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1383 * |s|1|ss|:-)|ls||ip|0|p|0 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1384 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1385 list = msim_msg_get_list(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1386 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1387 status_code = msim_msg_get_integer_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1388 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1389 status_headline = msim_msg_get_string_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1390 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1391 blist = purple_get_blist(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1392 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1393 /* Add buddy if not found. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1394 * TODO: Could this be responsible for #3444? */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1395 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1396 if (!user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1397 PurpleBuddy *buddy; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1398 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1399 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1400 "msim_status: making new buddy for %s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1401 buddy = purple_buddy_new(session->account, username, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1402 purple_blist_add_buddy(buddy, NULL, NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1403 |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1404 user = msim_get_user_from_buddy(buddy, TRUE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1405 user->id = msim_msg_get_integer(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1406 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1407 /* Keep track of the user ID across sessions */ |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1408 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1409 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1410 msim_store_user_info(session, msg, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1411 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1412 purple_debug_info("msim", "msim_status: found buddy %s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1413 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1414 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1415 if (status_headline && strcmp(status_headline, "") != 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1416 /* The status headline is plaintext, but libpurple treats it as HTML, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1417 * so escape any HTML characters to their entity equivalents. */ |
24770 | 1418 status_headline_escaped = g_markup_escape_text(status_headline, -1); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1419 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1420 status_headline_escaped = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1421 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1422 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1423 g_free(status_headline); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1424 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1425 /* don't copy; let the MsimUser own the headline, memory-wise */ |
24770 | 1426 g_free(user->headline); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1427 user->headline = status_headline_escaped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1428 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1429 /* Set user status */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1430 switch (status_code) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1431 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1432 purple_status_code = PURPLE_STATUS_OFFLINE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1433 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1434 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1435 case MSIM_STATUS_CODE_ONLINE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1436 purple_status_code = PURPLE_STATUS_AVAILABLE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1437 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1438 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1439 case MSIM_STATUS_CODE_AWAY: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1440 purple_status_code = PURPLE_STATUS_AWAY; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1441 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1442 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1443 case MSIM_STATUS_CODE_IDLE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1444 /* Treat idle as an available status. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1445 purple_status_code = PURPLE_STATUS_AVAILABLE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1446 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1447 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1448 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1449 purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1450 username, status_code); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1451 purple_status_code = PURPLE_STATUS_AVAILABLE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1452 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1453 unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1454 status_code); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1455 msim_unrecognized(session, NULL, unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1456 g_free(unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1457 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1458 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1459 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1460 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1461 if (status_code == MSIM_STATUS_CODE_IDLE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1462 purple_debug_info("msim", "msim_status: got idle: %s\n", username); |
24763
a8643ca8d2e0
Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents:
24761
diff
changeset
|
1463 purple_prpl_got_user_idle(session->account, username, TRUE, 0); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1464 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1465 /* All other statuses indicate going back to non-idle. */ |
24763
a8643ca8d2e0
Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents:
24761
diff
changeset
|
1466 purple_prpl_got_user_idle(session->account, username, FALSE, 0); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1467 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1468 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1469 #ifdef MSIM_SEND_CLIENT_VERSION |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1470 if (status_code == MSIM_STATUS_CODE_ONLINE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1471 /* Secretly whisper to unofficial clients our own version as they come online */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1472 msim_send_unofficial_client(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1473 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1474 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1475 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1476 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1477 /* Get information when they come online. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1478 * TODO: periodically refresh? |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1479 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1480 purple_debug_info("msim_incoming_status", "%s came online, looking up\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1481 msim_lookup_user(session, username, NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1482 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1483 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1484 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1485 msim_msg_list_free(list); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1486 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1487 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1488 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1489 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1490 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1491 * Handle an incoming instant message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1492 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1493 * @param session The session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1494 * @param msg Message from the server, containing 'f' (userid from) and 'msg'. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1495 * Should also contain username in _username from preprocessing. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1496 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1497 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1498 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1499 static gboolean |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1500 msim_incoming_im(MsimSession *session, MsimMessage *msg, const gchar *username) |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1501 { |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1502 gchar *msg_msim_markup, *msg_purple_markup; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1503 gchar *userid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1504 time_t time_received; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1505 PurpleConversation *conv; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1506 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1507 /* I know this isn't really a string... but we need it to be one for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1508 * purple_find_conversation_with_account(). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1509 userid = msim_msg_get_string(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1510 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1511 purple_debug_info("msim_incoming_im", "UserID is %s", userid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1512 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1513 if (msim_is_userid(username)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1514 purple_debug_info("msim", "Ignoring message from spambot (%s) on account %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1515 username, purple_account_get_username(session->account)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1516 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1517 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1518 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1519 /* See if a conversation with their UID already exists...*/ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1520 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, userid, session->account); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1521 if (conv) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1522 /* Since the conversation exists... We need to normalize it */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1523 purple_conversation_set_name(conv, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1524 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1525 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1526 msg_msim_markup = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1527 g_return_val_if_fail(msg_msim_markup != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1528 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1529 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1530 g_free(msg_msim_markup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1531 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1532 time_received = msim_msg_get_integer(msg, "date"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1533 if (!time_received) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1534 purple_debug_info("msim_incoming_im", "date in message not set.\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1535 time_received = time(NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1536 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1537 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1538 serv_got_im(session->gc, username, msg_purple_markup, PURPLE_MESSAGE_RECV, time_received); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1539 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1540 g_free(msg_purple_markup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1541 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1542 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1543 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1544 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1545 /** |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1546 * Handle an incoming action message or an IM. |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1547 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1548 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1549 * @param msg |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1550 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1551 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1552 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1553 static gboolean |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1554 msim_incoming_action_or_im(MsimSession *session, MsimMessage *msg) |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1555 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1556 gchar *msg_text, *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1557 gboolean rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1558 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1559 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1560 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1561 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1562 msg_text = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1563 g_return_val_if_fail(msg_text != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1564 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1565 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1566 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1567 |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1568 purple_debug_info("msim", |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1569 "msim_incoming_action_or_im: action <%s> from <%s>\n", |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1570 msg_text, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1571 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1572 if (g_str_equal(msg_text, "%typing%")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1573 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1574 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1575 } else if (g_str_equal(msg_text, "%stoptyping%")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1576 serv_got_typing_stopped(session->gc, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1577 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1578 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1579 rc = msim_incoming_zap(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1580 } else if (strstr(msg_text, "!!!GroupCount=")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1581 /* TODO: support group chats. I think the number in msg_text has |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1582 * something to do with the 'gid' field. */ |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1583 purple_debug_info("msim", |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1584 "msim_incoming_action_or_im: " |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1585 "TODO: implement #4691, group chats: %s\n", msg_text); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1586 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1587 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1588 } else if (strstr(msg_text, "!!!Offline=")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1589 /* TODO: support group chats. This one might mean a user |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1590 * went offline or exited the chat. */ |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1591 purple_debug_info("msim", "msim_incoming_action_or_im: " |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1592 "TODO: implement #4691, group chats: %s\n", msg_text); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1593 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1594 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1595 } else if (msim_msg_get_integer(msg, "aid") != 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1596 purple_debug_info("msim", "TODO: implement #4691, group chat from %d on %d: %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1597 msim_msg_get_integer(msg, "aid"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1598 msim_msg_get_integer(msg, "f"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1599 msg_text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1600 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1601 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1602 } else { |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1603 rc = msim_incoming_im(session, msg, username); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1604 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1605 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1606 g_free(msg_text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1607 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1608 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1609 return rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1610 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1611 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1612 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1613 * Process an incoming media (message background?) message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1614 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1615 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1616 msim_incoming_media(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1617 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1618 gchar *username, *text; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1619 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1620 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1621 text = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1622 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1623 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1624 g_return_val_if_fail(text != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1625 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1626 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1627 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1628 /* Media messages are sent when the user opens a window to someone. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1629 * Tell libpurple they started typing and stopped typing, to inform the Psychic |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1630 * Mode plugin so it too can open a window to the user. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1631 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1632 serv_got_typing_stopped(session->gc, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1633 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1634 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1635 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1636 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1637 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1638 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1639 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1640 * Process an incoming "unofficial client" message. The plugin for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1641 * Miranda IM sends this message with the plugin information. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1642 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1643 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1644 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1645 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1646 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1647 gchar *username, *client_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1648 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1649 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1650 client_info = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1651 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1652 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1653 g_return_val_if_fail(client_info != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1654 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1655 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1656 username, client_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1657 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1658 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1659 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1660 g_return_val_if_fail(user != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1661 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1662 if (user->client_info) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1663 g_free(user->client_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1664 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1665 user->client_info = client_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1666 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1667 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1668 /* Do not free client_info - the MsimUser now owns it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1669 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1670 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1671 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1672 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1673 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1674 * Handle an incoming buddy message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1675 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1676 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1677 msim_incoming_bm(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1678 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1679 guint bm; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1680 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1681 bm = msim_msg_get_integer(msg, "bm"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1682 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1683 msim_incoming_bm_record_cv(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1684 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1685 switch (bm) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1686 case MSIM_BM_STATUS: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1687 return msim_incoming_status(session, msg); |
27236
5fbcfcbd6551
Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents:
27219
diff
changeset
|
1688 case MSIM_BM_ACTION_OR_IM_DELAYABLE: |
5fbcfcbd6551
Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents:
27219
diff
changeset
|
1689 case MSIM_BM_ACTION_OR_IM_INSTANT: |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1690 return msim_incoming_action_or_im(session, msg); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1691 case MSIM_BM_MEDIA: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1692 return msim_incoming_media(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1693 case MSIM_BM_UNOFFICIAL_CLIENT: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1694 return msim_incoming_unofficial_client(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1695 default: |
28233
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1696 /* |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1697 * Unknown message type! We used to call |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1698 * msim_incoming_action_or_im(session, msg); |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1699 * for these, but that doesn't help anything, and it means |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1700 * we'll show broken gibberish if MySpace starts sending us |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1701 * other message types. |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1702 */ |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1703 purple_debug_warning("myspace", "Received unknown imcoming " |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1704 "message, bm=%u\n", bm); |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1705 return TRUE; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1706 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1707 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1708 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1709 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1710 * Process the initial server information from the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1711 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1712 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1713 msim_process_server_info(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1714 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1715 MsimMessage *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1716 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1717 body = msim_msg_get_dictionary(msg, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1718 g_return_val_if_fail(body != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1719 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1720 /* Example body: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1721 AdUnitRefreshInterval=10. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1722 AlertPollInterval=360. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1723 AllowChatRoomEmoticonSharing=False. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1724 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1725 CurClientVersion=673. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1726 EnableIMBrowse=True. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1727 EnableIMStuffAvatars=False. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1728 EnableIMStuffZaps=False. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1729 MaxAddAllFriends=100. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1730 MaxContacts=1000. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1731 MinClientVersion=594. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1732 MySpaceIM_ENGLISH=78744676. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1733 MySpaceNowTimer=720. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1734 PersistenceDataTimeout=900. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1735 UseWebChallenge=1. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1736 WebTicketGoHome=False |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1737 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1738 Anything useful? TODO: use what is useful, and use it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1739 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1740 purple_debug_info("msim_process_server_info", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1741 "maximum contacts: %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1742 msim_msg_get_integer(body, "MaxContacts")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1743 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1744 session->server_info = body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1745 /* session->server_info freed in msim_session_destroy */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1746 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1747 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1748 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1749 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1750 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1751 * Process a web challenge, used to login to the web site. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1752 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1753 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1754 msim_web_challenge(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1755 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1756 /* TODO: web challenge, store token. #2659. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1757 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1758 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1759 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1760 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1761 * Process a persistance message reply from the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1762 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1763 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1764 * @param msg Message reply from server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1765 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1766 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1767 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1768 * msim_lookup_user sets callback for here |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1769 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1770 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1771 msim_process_reply(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1772 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1773 MSIM_USER_LOOKUP_CB cb; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1774 gpointer data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1775 guint rid, cmd, dsn, lid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1776 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1777 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1778 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1779 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1780 msim_store_user_info(session, msg, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1781 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1782 rid = msim_msg_get_integer(msg, "rid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1783 cmd = msim_msg_get_integer(msg, "cmd"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1784 dsn = msim_msg_get_integer(msg, "dsn"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1785 lid = msim_msg_get_integer(msg, "lid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1786 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1787 /* Unsolicited messages */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1788 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1789 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1790 return msim_process_server_info(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1791 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1792 return msim_web_challenge(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1793 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1794 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1795 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1796 /* If a callback is registered for this userid lookup, call it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1797 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1798 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1799 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1800 if (cb) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1801 purple_debug_info("msim", "msim_process_reply: calling callback now\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1802 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */ |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
1803 cb(session, msg, data); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1804 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1805 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1806 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1807 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1808 "msim_process_reply: no callback for rid %d\n", rid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1809 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1810 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1811 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1812 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1813 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1814 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1815 * Handle an error from the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1816 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1817 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1818 * @param msg The message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1819 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1820 * @return TRUE if successfully reported error. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1821 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1822 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1823 msim_error(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1824 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1825 gchar *errmsg, *full_errmsg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1826 guint err; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1827 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1828 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1829 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1830 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1831 err = msim_msg_get_integer(msg, "err"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1832 errmsg = msim_msg_get_string(msg, "errmsg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1833 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1834 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1835 errmsg ? errmsg : "no 'errmsg' given"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1836 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1837 g_free(errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1838 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1839 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1840 session->sesskey, full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1841 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1842 /* Destroy session if fatal. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1843 if (msim_msg_get(msg, "fatal")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1844 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1845 purple_debug_info("msim", "fatal error, closing\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1846 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1847 switch (err) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1848 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1849 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1850 if (!purple_account_get_remember_password(session->account)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1851 purple_account_set_password(session->account, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1852 #ifdef MSIM_MAX_PASSWORD_LENGTH |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1853 if (session->account->password && (strlen(session->account->password) > MSIM_MAX_PASSWORD_LENGTH)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1854 gchar *suggestion; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1855 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1856 suggestion = g_strdup_printf(_("%s Your password is " |
27209
c4f0e47c7bed
Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents:
27109
diff
changeset
|
1857 "%zu characters, which is longer than the " |
c4f0e47c7bed
Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents:
27109
diff
changeset
|
1858 "maximum length of %d. Please shorten your " |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1859 "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."), |
27209
c4f0e47c7bed
Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents:
27109
diff
changeset
|
1860 full_errmsg, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1861 strlen(session->account->password), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1862 MSIM_MAX_PASSWORD_LENGTH); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1863 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1864 /* Replace full_errmsg. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1865 g_free(full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1866 full_errmsg = suggestion; |
27210
0a8129263401
Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents:
27209
diff
changeset
|
1867 } else { |
0a8129263401
Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents:
27209
diff
changeset
|
1868 g_free(full_errmsg); |
0a8129263401
Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents:
27209
diff
changeset
|
1869 full_errmsg = g_strdup(_("Incorrect username or password")); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1870 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1871 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1872 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1873 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1874 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1875 if (!purple_account_get_remember_password(session->account)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1876 purple_account_set_password(session->account, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1877 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1878 } |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
1879 purple_connection_error_reason(session->gc, reason, full_errmsg); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1880 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1881 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1882 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1883 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1884 g_free(full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1885 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1886 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1887 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1888 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1889 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1890 * Process a message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1891 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1892 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1893 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1894 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1895 * @return TRUE if successful. FALSE if processing failed. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1896 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1897 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1898 msim_process(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1899 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1900 g_return_val_if_fail(session != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1901 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1902 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1903 if (msim_msg_get_integer(msg, "lc") == 1) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1904 return msim_login_challenge(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1905 } else if (msim_msg_get_integer(msg, "lc") == 2) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1906 /* return msim_we_are_logged_on(session, msg); */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1907 if (msim_is_username_set(session, msg)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1908 return msim_we_are_logged_on(session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1909 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1910 /* No username is set... We'll wait for the callbacks to do their work */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1911 /* When they're all done, the last one will call msim_we_are_logged_on() and pick up where we left off */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1912 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1913 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1914 } else if (msim_msg_get(msg, "bm")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1915 return msim_incoming_bm(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1916 } else if (msim_msg_get(msg, "rid")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1917 return msim_process_reply(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1918 } else if (msim_msg_get(msg, "error")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1919 return msim_error(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1920 } else if (msim_msg_get(msg, "ka")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1921 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1922 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1923 msim_unrecognized(session, msg, "in msim_process"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1924 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1925 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1926 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1927 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1928 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1929 * After a uid is resolved to username, tag it with the username and submit for processing. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1930 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1931 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1932 * @param userinfo Response messsage to resolving request. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1933 * @param data MsimMessage *, the message to attach information to. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1934 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1935 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
1936 msim_incoming_resolved(MsimSession *session, const MsimMessage *userinfo, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1937 gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1938 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1939 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1940 MsimMessage *msg, *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1941 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1942 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1943 g_return_if_fail(userinfo != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1944 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1945 body = msim_msg_get_dictionary(userinfo, "body"); |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1946 g_return_if_fail(body != NULL); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1947 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1948 username = msim_msg_get_string(body, "UserName"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1949 g_return_if_fail(username != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1950 /* Note: username will be owned by 'msg' below. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1951 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1952 msg = (MsimMessage *)data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1953 g_return_if_fail(msg != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1954 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1955 /* TODO: more elegant solution than below. attach whole message? */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1956 /* Special elements name beginning with '_', we'll use internally within the |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1957 * program (did not come directly from the wire). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1958 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, username); /* This makes 'msg' the owner of 'username' */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1959 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1960 /* TODO: attach more useful information, like ImageURL */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1961 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1962 msim_process(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1963 |
24853
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
1964 msim_msg_free(msg); |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1965 msim_msg_free(body); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1966 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1967 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1968 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1969 * Preprocess incoming messages, resolving as needed, calling |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1970 * msim_process() when ready to process. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1971 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1972 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1973 * @param msg MsimMessage *, freed by caller. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1974 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1975 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1976 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1977 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1978 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1979 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1980 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1981 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1982 guint uid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1983 const gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1984 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1985 /* 'f' = userid message is from, in buddy messages */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1986 uid = msim_msg_get_integer(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1987 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1988 username = msim_uid2username_from_blist(session->account, uid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1989 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1990 if (username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1991 /* Know username already, use it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1992 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1993 username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1994 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1995 return msim_process(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1996 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1997 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1998 gchar *from; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1999 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2000 /* Send lookup request. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2001 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2002 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2003 from = msim_msg_get_string(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2004 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2005 g_free(from); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2006 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2007 /* indeterminate */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2008 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2009 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2010 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2011 /* Nothing to resolve - send directly to processing. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2012 return msim_process(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2013 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2014 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2015 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2016 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2017 * Callback when input available. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2018 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2019 * @param gc_uncasted A PurpleConnection pointer. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2020 * @param source File descriptor. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2021 * @param cond PURPLE_INPUT_READ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2022 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2023 * Reads the input, and calls msim_preprocess_incoming() to handle it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2024 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2025 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2026 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2027 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2028 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2029 PurpleAccount *account; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2030 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2031 gchar *end; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2032 int n; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2033 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2034 g_return_if_fail(gc_uncasted != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2035 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2036 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2037 gc = (PurpleConnection *)(gc_uncasted); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2038 account = purple_connection_get_account(gc); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2039 session = gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2040 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2041 /* libpurple/eventloop.h only defines these two */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2042 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2043 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2044 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2045 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2046 _("Invalid input condition")); |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2047 return; |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2048 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2049 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2050 g_return_if_fail(cond == PURPLE_INPUT_READ); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2051 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2052 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2053 /* Mark down that we got data, so we don't timeout. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2054 session->last_comm = time(NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2055 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2056 /* If approaching end of buffer, reallocate some more memory. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2057 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2058 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2059 "msim_input_cb: %d-byte read buffer full, rxoff=%d, " "growing by %d bytes\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2060 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2061 session->rxsize += MSIM_READ_BUF_SIZE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2062 session->rxbuf = g_realloc(session->rxbuf, session->rxsize); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2063 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2064 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2065 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2066 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2067 purple_debug_info("msim", "dynamic buffer at %d (max %d), reading up to %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2068 session->rxoff, session->rxsize, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2069 MSIM_READ_BUF_SIZE - session->rxoff - 1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2070 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2071 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2072 * the file descriptor, but it sometimes differs from the 'source' parameter. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2073 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2074 n = recv(session->fd, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2075 session->rxbuf + session->rxoff, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2076 session->rxsize - session->rxoff - 1, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2077 |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2078 if (n < 0) { |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2079 gchar *tmp; |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2080 |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2081 if (errno == EAGAIN) |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2082 /* No worries */ |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2083 return; |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2084 |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2085 tmp = g_strdup_printf(_("Lost connection with server: %s"), |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2086 g_strerror(errno)); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2087 purple_connection_error_reason(gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2088 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2089 g_free(tmp); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2090 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2091 } else if (n == 0) { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2092 purple_connection_error_reason(gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2093 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2094 _("Server closed the connection")); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2095 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2096 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2097 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2098 /* Null terminate */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2099 purple_debug_info("msim", "msim_input_cb: going to null terminate " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2100 "at n=%d\n", n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2101 session->rxbuf[session->rxoff + n] = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2102 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2103 #ifdef MSIM_CHECK_EMBEDDED_NULLS |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2104 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2105 if (strlen(session->rxbuf + session->rxoff) != n) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2106 /* Occurs after login, but it is not a null byte. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2107 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes" |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2108 "--null byte encountered?\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2109 strlen(session->rxbuf + session->rxoff), n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2110 /*purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2111 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2112 "Invalid message - null byte on input"); */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2113 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2114 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2115 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2116 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2117 session->rxoff += n; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2118 purple_debug_info("msim", "msim_input_cb: read=%d\n", n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2119 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2120 #ifdef MSIM_DEBUG_RXBUF |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2121 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2122 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2123 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2124 /* Look for \\final\\ end markers. If found, process message. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2125 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2126 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2127 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2128 #ifdef MSIM_DEBUG_RXBUF |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2129 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2130 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2131 *end = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2132 msg = msim_parse(session->rxbuf); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2133 if (!msg) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2134 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2135 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2136 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2137 _("Unable to parse message")); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2138 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2139 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2140 /* Process message and then free it (processing function should |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2141 * clone message if it wants to keep it afterwards.) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2142 if (!msim_preprocess_incoming(session, msg)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2143 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2144 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2145 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2146 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2147 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2148 /* Move remaining part of buffer to beginning. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2149 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2150 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2151 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2152 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2153 /* Clear end of buffer |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2154 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2155 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2156 } |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2157 } |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2158 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2159 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2160 * Callback when connected. Sets up input handlers. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2161 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2162 * @param data A PurpleConnection pointer. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2163 * @param source File descriptor. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2164 * @param error_message |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2165 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2166 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2167 msim_connect_cb(gpointer data, gint source, const gchar *error_message) |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2168 { |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2169 PurpleConnection *gc; |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2170 MsimSession *session; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2171 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2172 g_return_if_fail(data != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2173 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2174 gc = (PurpleConnection *)data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2175 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2176 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2177 if (source < 0) { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2178 gchar *tmp = g_strdup_printf(_("Unable to connect: %s"), |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2179 error_message); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2180 purple_connection_error_reason (gc, |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2181 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2182 g_free(tmp); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2183 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2184 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2185 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2186 session->fd = source; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2187 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2188 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2189 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2190 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2191 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2192 * Start logging in to the MSIM servers. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2193 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2194 * @param acct Account information to use to login. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2195 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2196 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2197 msim_login(PurpleAccount *acct) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2198 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2199 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2200 const gchar *host; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2201 int port; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2202 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2203 g_return_if_fail(acct != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2204 g_return_if_fail(acct->username != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2205 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2206 purple_debug_info("msim", "logging in %s\n", acct->username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2207 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2208 gc = purple_account_get_connection(acct); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2209 gc->proto_data = msim_session_new(acct); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2210 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2211 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2212 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2213 * Lets wipe out our local list of blocked buddies. We'll get a |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2214 * list of all blocked buddies from the server, and we shouldn't |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2215 * have stuff in the local list that isn't on the server list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2216 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2217 while (acct->deny != NULL) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2218 purple_privacy_deny_remove(acct, acct->deny->data, TRUE); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2219 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2220 /* 1. connect to server */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2221 purple_connection_update_progress(gc, _("Connecting"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2222 0, /* which connection step this is */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2223 4); /* total number of steps */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2224 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2225 host = purple_account_get_string(acct, "server", MSIM_SERVER); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2226 port = purple_account_get_int(acct, "port", MSIM_PORT); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2227 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2228 /* From purple.sf.net/api: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2229 * """Note that this function name can be misleading--although it is called |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2230 * "proxy connect," it is used for establishing any outgoing TCP connection, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2231 * whether through a proxy or not.""" */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2232 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2233 /* Calls msim_connect_cb when connected. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2234 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2235 /* TODO: try other ports if in auto mode, then save |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2236 * working port and try that first next time. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2237 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2238 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2239 _("Unable to connect")); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2240 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2241 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2242 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2243 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2244 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2245 * Close the connection. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2246 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2247 * @param gc The connection. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2248 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2249 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2250 msim_close(PurpleConnection *gc) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2251 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2252 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2253 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2254 if (gc == NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2255 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2256 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2257 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2258 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2259 if (session == NULL) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2260 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2261 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2262 gc->proto_data = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2263 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2264 if (!MSIM_SESSION_VALID(session)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2265 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2266 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2267 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2268 if (session->gc->inpa) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2269 purple_input_remove(session->gc->inpa); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2270 } |
24767
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2271 if (session->fd >= 0) { |
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2272 close(session->fd); |
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2273 session->fd = -1; |
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2274 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2275 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2276 msim_session_destroy(session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2277 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2278 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2279 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2280 * Schedule an IM to be sent once the user ID is looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2281 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2282 * @param gc Connection. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2283 * @param who A user id, email, or username to send the message to. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2284 * @param message Instant message text to send. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2285 * @param flags Flags. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2286 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2287 * @return 1 if successful or postponed, -1 if failed |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2288 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2289 * Allows sending to a user by username, email address, or userid. If |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2290 * a username or email address is given, the userid must be looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2291 * This function does that by calling msim_postprocess_outgoing(). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2292 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2293 static int |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2294 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2295 PurpleMessageFlags flags) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2296 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2297 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2298 gchar *message_msim; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2299 int rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2300 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2301 g_return_val_if_fail(gc != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2302 g_return_val_if_fail(who != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2303 g_return_val_if_fail(message != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2304 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2305 /* 'flags' has many options, not used here. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2306 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2307 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2308 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2309 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2310 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2311 message_msim = html_to_msim_markup(session, message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2312 |
27236
5fbcfcbd6551
Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents:
27219
diff
changeset
|
2313 if (msim_send_bm(session, who, message_msim, MSIM_BM_ACTION_OR_IM_DELAYABLE)) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2314 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2315 * return 1 even if the message could not be sent, since I don't know if |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2316 * it has failed yet--because the IM is only sent after the userid is |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2317 * retrieved from the server (which happens after this function returns). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2318 * If an error does occur, it should be logged to the IM window. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2319 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2320 rc = 1; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2321 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2322 rc = -1; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2323 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2324 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2325 g_free(message_msim); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2326 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2327 return rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2328 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2329 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2330 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2331 * Handle when our user starts or stops typing to another user. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2332 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2333 * @param gc |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2334 * @param name The buddy name to which our user is typing to |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2335 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2336 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2337 * @return 0 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2338 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2339 static unsigned int |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2340 msim_send_typing(PurpleConnection *gc, const gchar *name, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2341 PurpleTypingState state) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2342 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2343 const gchar *typing_str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2344 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2345 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2346 g_return_val_if_fail(gc != NULL, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2347 g_return_val_if_fail(name != NULL, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2348 |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2349 session = (MsimSession *)gc->proto_data; |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2350 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2351 g_return_val_if_fail(MSIM_SESSION_VALID(session), 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2352 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2353 switch (state) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2354 case PURPLE_TYPING: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2355 typing_str = "%typing%"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2356 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2357 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2358 case PURPLE_TYPED: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2359 case PURPLE_NOT_TYPING: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2360 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2361 typing_str = "%stoptyping%"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2362 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2363 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2364 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2365 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str); |
27236
5fbcfcbd6551
Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents:
27219
diff
changeset
|
2366 msim_send_bm(session, name, typing_str, MSIM_BM_ACTION_OR_IM_INSTANT); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2367 return 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2368 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2369 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2370 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2371 * Callback for msim_get_info(), for when user info is received. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2372 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2373 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
2374 msim_get_info_cb(MsimSession *session, const MsimMessage *user_info_msg, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2375 gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2376 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2377 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2378 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2379 PurpleNotifyUserInfo *user_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2380 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2381 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2382 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2383 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2384 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2385 orthogonality. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2386 msg = (MsimMessage *)data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2387 g_return_if_fail(msg != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2388 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2389 username = msim_msg_get_string(msg, "user"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2390 if (!username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2391 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2392 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2393 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2394 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2395 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2396 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2397 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2398 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2399 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2400 if (!user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2401 /* User isn't on blist, create a temporary user to store info. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2402 user = g_new0(MsimUser, 1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2403 user->temporary_user = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2404 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2405 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2406 /* Update user structure with new information */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2407 msim_store_user_info(session, user_info_msg, user); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2408 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2409 user_info = purple_notify_user_info_new(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2410 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2411 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2412 msim_append_user_info(session, user_info, user, TRUE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2413 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2414 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2415 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2416 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2417 purple_notify_user_info_destroy(user_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2418 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2419 if (user->temporary_user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2420 g_free(user->client_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2421 g_free(user->gender); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2422 g_free(user->location); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2423 g_free(user->headline); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2424 g_free(user->display_name); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2425 g_free(user->username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2426 g_free(user->image_url); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2427 g_free(user); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2428 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2429 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2430 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2431 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2432 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2433 * Retrieve a user's profile. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2434 * @param username Username, user ID, or email address to lookup. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2435 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2436 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2437 msim_get_info(PurpleConnection *gc, const gchar *username) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2438 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2439 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2440 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2441 gchar *user_to_lookup; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2442 MsimMessage *user_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2443 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2444 g_return_if_fail(gc != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2445 g_return_if_fail(username != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2446 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2447 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2448 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2449 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2450 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2451 /* Obtain uid of buddy. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2452 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2453 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2454 /* If is on buddy list, lookup by uid since it is faster. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2455 if (user && user->id) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2456 user_to_lookup = g_strdup_printf("%d", user->id); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2457 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2458 /* Looking up buddy not on blist. Lookup by whatever user entered. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2459 user_to_lookup = g_strdup(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2460 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2461 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2462 /* Pass the username to msim_get_info_cb(), because since we lookup |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2463 * by userid, the userinfo message will only contain the uid (not |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2464 * the username) but it would be useful to display the username too. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2465 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2466 user_msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2467 "user", MSIM_TYPE_STRING, g_strdup(username), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2468 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2469 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2470 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2471 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2472 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2473 g_free(user_to_lookup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2474 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2475 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2476 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2477 * Set status using an MSIM_STATUS_CODE_* value. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2478 * @param status_code An MSIM_STATUS_CODE_* value. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2479 * @param statstring Status string, must be a dynamic string (will be freed by msim_send). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2480 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2481 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2482 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2483 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2484 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2485 g_return_if_fail(statstring != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2486 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2487 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2488 status_code, statstring); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2489 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2490 if (!msim_send(session, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2491 "status", MSIM_TYPE_INTEGER, status_code, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2492 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2493 "statstring", MSIM_TYPE_STRING, statstring, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2494 "locstring", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2495 NULL)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2496 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2497 purple_debug_info("msim", "msim_set_status: failed to set status\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2498 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2499 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2500 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2501 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2502 * Set your status - callback for when user manually sets it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2503 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2504 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2505 msim_set_status(PurpleAccount *account, PurpleStatus *status) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2506 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2507 PurpleStatusType *type; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2508 PurplePresence *pres; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2509 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2510 guint status_code; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2511 const gchar *message; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2512 gchar *stripped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2513 gchar *unrecognized_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2514 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2515 session = (MsimSession *)account->gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2516 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2517 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2518 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2519 type = purple_status_get_type(status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2520 pres = purple_status_get_presence(status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2521 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2522 switch (purple_status_type_get_primitive(type)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2523 case PURPLE_STATUS_AVAILABLE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2524 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2525 MSIM_STATUS_CODE_ONLINE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2526 status_code = MSIM_STATUS_CODE_ONLINE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2527 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2528 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2529 case PURPLE_STATUS_INVISIBLE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2530 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2531 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2532 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2533 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2534 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2535 case PURPLE_STATUS_AWAY: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2536 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2537 MSIM_STATUS_CODE_AWAY); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2538 status_code = MSIM_STATUS_CODE_AWAY; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2539 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2540 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2541 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2542 purple_debug_info("msim", "msim_set_status: unknown " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2543 "status interpreting as online"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2544 status_code = MSIM_STATUS_CODE_ONLINE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2545 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2546 unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2547 purple_status_type_get_primitive(type)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2548 msim_unrecognized(session, NULL, unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2549 g_free(unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2550 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2551 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2552 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2553 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2554 message = purple_status_get_attr_string(status, "message"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2555 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2556 /* Status strings are plain text. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2557 if (message != NULL) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2558 stripped = purple_markup_strip_html(message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2559 else |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2560 stripped = g_strdup(""); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2561 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2562 msim_set_status_code(session, status_code, stripped); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2563 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2564 /* If we should be idle, set that status. Time is irrelevant here. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2565 if (purple_presence_is_idle(pres) && status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2566 msim_set_idle(account->gc, 1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2567 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2568 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2569 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2570 * Go idle. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2571 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2572 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2573 msim_set_idle(PurpleConnection *gc, int time) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2574 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2575 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2576 PurpleStatus *status; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2577 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2578 g_return_if_fail(gc != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2579 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2580 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2581 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2582 g_return_if_fail(MSIM_SESSION_VALID(session)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2583 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2584 status = purple_account_get_active_status(session->account); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2585 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2586 if (time == 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2587 /* Going back from idle. In msim, idle is mutually exclusive |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2588 * from the other states (you can only be away or idle, but not |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2589 * both, for example), so by going non-idle I go back to what |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2590 * libpurple says I should be. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2591 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2592 msim_set_status(session->account, status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2593 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2594 const gchar *message; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2595 gchar *stripped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2596 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2597 /* Set the idle message to the status message from the real |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2598 * current status. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2599 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2600 message = purple_status_get_attr_string(status, "message"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2601 if (message != NULL) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2602 stripped = purple_markup_strip_html(message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2603 else |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2604 stripped = g_strdup(""); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2605 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2606 /* msim doesn't support idle time, so just go idle */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2607 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2608 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2609 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2610 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2611 /** |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2612 * @return TRUE if everything was ok, FALSE if something went awry. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2613 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2614 static gboolean |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2615 msim_update_blocklist_for_buddy(MsimSession *session, const char *name, gboolean allow, gboolean block) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2616 { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2617 MsimMessage *msg; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2618 GList *list; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2619 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2620 list = NULL; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2621 list = g_list_prepend(list, allow ? "a+" : "a-"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2622 list = g_list_prepend(list, "<uid>"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2623 list = g_list_prepend(list, block ? "b+" : "b-"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2624 list = g_list_prepend(list, "<uid>"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2625 list = g_list_reverse(list); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2626 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2627 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2628 "blocklist", MSIM_TYPE_BOOLEAN, TRUE, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2629 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2630 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2631 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2632 "idlist", MSIM_TYPE_LIST, list, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2633 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2634 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2635 if (!msim_postprocess_outgoing(session, msg, name, "idlist", NULL)) { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2636 purple_debug_error("myspace", |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2637 "blocklist command failed for %s, allow=%d, block=%d\n", |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2638 name, allow, block); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2639 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2640 return FALSE; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2641 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2642 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2643 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2644 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2645 return TRUE; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2646 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2647 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2648 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2649 * Add a buddy to user's buddy list. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2650 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2651 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2652 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2653 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2654 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2655 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2656 MsimMessage *msg_persist; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2657 MsimMessage *body; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2658 const char *name, *gname; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2659 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2660 session = (MsimSession *)gc->proto_data; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2661 name = purple_buddy_get_name(buddy); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2662 gname = group ? purple_group_get_name(group) : NULL; |
24509
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2663 |
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2664 if (msim_get_user_from_buddy(buddy, FALSE) != NULL) |
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2665 return; |
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2666 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2667 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n", |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2668 name, gname ? gname : "(no group)"); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2669 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2670 msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2671 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2672 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2673 /* "newprofileid" will be inserted here with uid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2674 "reason", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2675 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2676 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2677 if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2678 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed.")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2679 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2680 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2681 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2682 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2683 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2684 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2685 * buddy list since Purple adds it locally. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2686 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2687 body = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2688 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2689 "GroupName", MSIM_TYPE_STRING, g_strdup(gname), |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2690 "Position", MSIM_TYPE_INTEGER, 1000, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2691 "Visibility", MSIM_TYPE_INTEGER, 1, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2692 "NickName", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2693 "NameSelect", MSIM_TYPE_INTEGER, 0, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2694 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2695 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2696 /* TODO: Update blocklist. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2697 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2698 msg_persist = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2699 "persist", MSIM_TYPE_INTEGER, 1, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2700 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2701 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2702 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2703 "uid", MSIM_TYPE_INTEGER, session->userid, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2704 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2705 /* TODO: Use msim_new_reply_callback to get rid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2706 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2707 "body", MSIM_TYPE_DICTIONARY, body, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2708 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2709 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2710 if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL)) |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2711 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2712 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2713 msim_msg_free(msg_persist); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2714 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2715 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2716 msim_msg_free(msg_persist); |
24748
75ecd41a64ba
Fix a bug where if "Show our presence only to people on our buddy list"
Mark Doliner <mark@kingant.net>
parents:
24747
diff
changeset
|
2717 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2718 /* Add to allow list, remove from block list */ |
25378
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2719 msim_update_blocklist_for_buddy(session, name, TRUE, FALSE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2720 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2721 |
25383 | 2722 static void |
2723 msim_buddy_free(PurpleBuddy *buddy) | |
2724 { | |
2725 msim_user_free(purple_buddy_get_protocol_data(buddy)); | |
2726 purple_buddy_set_protocol_data(buddy, NULL); | |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2727 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2728 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2729 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2730 * Remove a buddy from the user's buddy list. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2731 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2732 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2733 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2734 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2735 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2736 MsimMessage *delbuddy_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2737 MsimMessage *persist_msg; |
25377
a4a17fe80160
explicit merge of 'f7807039eeef499a403d638cbcb94060a1d33eea'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2738 const char *name; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2739 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2740 session = (MsimSession *)gc->proto_data; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2741 name = purple_buddy_get_name(buddy); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2742 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2743 delbuddy_msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2744 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2745 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2746 /* 'delprofileid' with uid will be inserted here. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2747 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2748 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2749 if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2750 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2751 msim_msg_free(delbuddy_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2752 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2753 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2754 msim_msg_free(delbuddy_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2755 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2756 persist_msg = msim_msg_new( |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2757 "persist", MSIM_TYPE_INTEGER, 1, |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2758 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2759 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2760 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2761 "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID, |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2762 "uid", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2763 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2764 /* <uid> will be replaced by postprocessing */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2765 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2766 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2767 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2768 if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2769 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2770 msim_msg_free(persist_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2771 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2772 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2773 msim_msg_free(persist_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2774 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2775 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2776 * Remove from our approve list and from our block list (this |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2777 * doesn't seem like it would be necessary, but the official client |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2778 * does it) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2779 */ |
25383 | 2780 if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) { |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2781 purple_notify_error(NULL, NULL, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2782 _("Failed to remove buddy"), _("blocklist command failed")); |
24853
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
2783 return; |
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
2784 } |
25382
c0b42d6c2785
propagate from branch 'im.pidgin.pidgin' (head f018e11a7ea08e07f22667e6daca2ec7e64f9710)
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2785 msim_buddy_free(buddy); |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2786 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2787 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2788 /** |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2789 * Remove a buddy from the user's buddy list and add them to the block list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2790 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2791 static void |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2792 msim_add_deny(PurpleConnection *gc, const char *name) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2793 { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2794 MsimSession *session; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2795 MsimMessage *msg, *body; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2796 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2797 session = (MsimSession *)gc->proto_data; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2798 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2799 /* Remove from buddy list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2800 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2801 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2802 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2803 /* 'delprofileid' with uid will be inserted here. */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2804 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2805 if (!msim_postprocess_outgoing(session, msg, name, "delprofileid", NULL)) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2806 purple_debug_error("myspace", "delbuddy command failed\n"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2807 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2808 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2809 /* Remove from our approve list and add to our block list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2810 msim_update_blocklist_for_buddy(session, name, FALSE, TRUE); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2811 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2812 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2813 * Add the buddy to our list of blocked contacts, so we know they |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2814 * are blocked if we log in with another client |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2815 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2816 body = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2817 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2818 "Visibility", MSIM_TYPE_INTEGER, 2, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2819 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2820 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2821 "persist", MSIM_TYPE_INTEGER, 1, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2822 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2823 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2824 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2825 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2826 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2827 "body", MSIM_TYPE_DICTIONARY, body, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2828 NULL); |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2829 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL)) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2830 purple_debug_error("myspace", "add to block list command failed\n"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2831 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2832 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2833 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2834 * TODO: MySpace doesn't allow blocked buddies on our buddy list, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2835 * do they? If not then we need to remove the buddy from |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2836 * libpurple's buddy list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2837 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2838 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2839 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2840 /** |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2841 * Remove a buddy from the user's block list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2842 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2843 static void |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2844 msim_rem_deny(PurpleConnection *gc, const char *name) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2845 { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2846 MsimSession *session; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2847 MsimMessage *msg, *body; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2848 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2849 session = (MsimSession *)gc->proto_data; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2850 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2851 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2852 * Remove from our list of blocked contacts, so we know they |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2853 * are no longer blocked if we log in with another client |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2854 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2855 body = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2856 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2857 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2858 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2859 "persist", MSIM_TYPE_INTEGER, 1, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2860 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2861 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2862 "dsn", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_DSN, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2863 "lid", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_LID, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2864 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2865 "body", MSIM_TYPE_DICTIONARY, body, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2866 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2867 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL)) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2868 purple_debug_error("myspace", "remove from block list command failed\n"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2869 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2870 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2871 /* Remove from our approve list and our block list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2872 msim_update_blocklist_for_buddy(session, name, FALSE, FALSE); |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2873 } |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2874 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2875 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2876 * Returns a string of a username in canonical form. Basically removes all the |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2877 * spaces, lowercases the string, and looks up user IDs to usernames. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2878 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2879 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2880 * Borrowed this code from oscar_normalize. Added checking for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2881 * "if userid, get name before normalizing" |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2882 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2883 static const char *msim_normalize(const PurpleAccount *account, const char *str) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2884 static char normalized[BUF_LEN]; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2885 char *tmp1, *tmp2; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2886 int i, j; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2887 guint id; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2888 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2889 g_return_val_if_fail(str != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2890 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2891 if (msim_is_userid(str)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2892 /* Have user ID, we need to get their username first :) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2893 const char *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2894 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2895 /* If the account does not exist, we can't look up the user. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2896 if (!account || !account->gc) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2897 return str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2898 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2899 id = atol(str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2900 username = msim_uid2username_from_blist((PurpleAccount *)account, id); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2901 if (!username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2902 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2903 /* Note: manual lookup using msim_lookup_user() is a problem inside |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2904 * msim_normalize(), because msim_lookup_user() calls a callback function |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2905 * when the user information has been looked up, but msim_normalize() expects |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2906 * the result immediately. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2907 strncpy(normalized, str, BUF_LEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2908 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2909 strncpy(normalized, username, BUF_LEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2910 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2911 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2912 /* Have username. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2913 strncpy(normalized, str, BUF_LEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2914 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2915 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2916 /* Strip spaces. */ |
24894
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24853
diff
changeset
|
2917 for (i=0, j=0; normalized[j]; j++) { |
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24853
diff
changeset
|
2918 if (normalized[j] != ' ') |
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24853
diff
changeset
|
2919 normalized[i++] = normalized[j]; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2920 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2921 normalized[i] = '\0'; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2922 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2923 /* Lowercase and perform UTF-8 normalization. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2924 tmp1 = g_utf8_strdown(normalized, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2925 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2926 g_snprintf(normalized, sizeof(normalized), "%s", tmp2); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2927 g_free(tmp2); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2928 g_free(tmp1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2929 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2930 /* TODO: re-add caps and spacing back to what the user wanted. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2931 * User can format their own names, for example 'msimprpl' is shown |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2932 * as 'MsIm PrPl' in the official client. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2933 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2934 * TODO: file a ticket to add this enhancement. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2935 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2936 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2937 return normalized; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2938 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2939 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2940 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2941 * Return whether the buddy can be messaged while offline. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2942 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2943 * The protocol supports offline messages in just the same way as online |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2944 * messages. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2945 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2946 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2947 msim_offline_message(const PurpleBuddy *buddy) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2948 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2949 return TRUE; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2950 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2951 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2952 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2953 * Send raw data to the server, possibly with embedded NULs. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2954 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2955 * Used in prpl_info struct, so that plugins can have the most possible |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2956 * control of what is sent over the connection. Inside this prpl, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2957 * msim_send_raw() is used, since it sends NUL-terminated strings (easier). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2958 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2959 * @param gc PurpleConnection |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2960 * @param buf Buffer to send |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2961 * @param total_bytes Size of buffer to send |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2962 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2963 * @return Bytes successfully sent, or -1 on error. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2964 */ |
24743
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2965 /* |
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2966 * TODO: This needs to do non-blocking writes and use a watcher to check |
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2967 * when the fd is available to be written to. |
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2968 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2969 static int |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2970 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2971 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2972 int total_bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2973 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2974 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2975 g_return_val_if_fail(gc != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2976 g_return_val_if_fail(buf != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2977 g_return_val_if_fail(total_bytes >= 0, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2978 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2979 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2980 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2981 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2982 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2983 /* Loop until all data is sent, or a failure occurs. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2984 total_bytes_sent = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2985 do { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2986 int bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2987 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2988 bytes_sent = send(session->fd, buf + total_bytes_sent, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2989 total_bytes - total_bytes_sent, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2990 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2991 if (bytes_sent < 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2992 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2993 buf, g_strerror(errno)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2994 return total_bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2995 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2996 total_bytes_sent += bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2997 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2998 } while(total_bytes_sent < total_bytes); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2999 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3000 return total_bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3001 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3002 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3003 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3004 * Send raw data (given as a NUL-terminated string) to the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3005 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3006 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3007 * @param msg The raw data to send, in a NUL-terminated string. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3008 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3009 * @return TRUE if succeeded, FALSE if not. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3010 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3011 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3012 gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3013 msim_send_raw(MsimSession *session, const gchar *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3014 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3015 size_t len; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3016 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3017 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3018 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3019 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3020 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3021 len = strlen(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3022 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3023 return msim_send_really_raw(session->gc, msg, len) == len; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3024 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3025 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3026 static GHashTable * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3027 msim_get_account_text_table(PurpleAccount *unused) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3028 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3029 GHashTable *table; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3030 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3031 table = g_hash_table_new(g_str_hash, g_str_equal); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3032 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3033 g_hash_table_insert(table, "login_label", (gpointer)_("Email Address...")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3034 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3035 return table; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3036 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3037 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3038 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3039 * Callbacks called by Purple, to access this plugin. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3040 */ |
20057 | 3041 static PurplePluginProtocolInfo prpl_info = { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3042 /* options */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3043 OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3044 | OPT_PROTO_MAIL_CHECK, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3045 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3046 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3047 NULL, /* user_splits */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3048 NULL, /* protocol_options */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3049 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3050 msim_list_icon, /* list_icon */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3051 NULL, /* list_emblems */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3052 msim_status_text, /* status_text */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3053 msim_tooltip_text, /* tooltip_text */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3054 msim_status_types, /* status_types */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3055 msim_blist_node_menu, /* blist_node_menu */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3056 NULL, /* chat_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3057 NULL, /* chat_info_defaults */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3058 msim_login, /* login */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3059 msim_close, /* close */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3060 msim_send_im, /* send_im */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3061 NULL, /* set_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3062 msim_send_typing, /* send_typing */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3063 msim_get_info, /* get_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3064 msim_set_status, /* set_status */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3065 msim_set_idle, /* set_idle */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3066 NULL, /* change_passwd */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3067 msim_add_buddy, /* add_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3068 NULL, /* add_buddies */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3069 msim_remove_buddy, /* remove_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3070 NULL, /* remove_buddies */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3071 NULL, /* add_permit */ |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
3072 msim_add_deny, /* add_deny */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3073 NULL, /* rem_permit */ |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
3074 msim_rem_deny, /* rem_deny */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3075 NULL, /* set_permit_deny */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3076 NULL, /* join_chat */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3077 NULL, /* reject chat invite */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3078 NULL, /* get_chat_name */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3079 NULL, /* chat_invite */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3080 NULL, /* chat_leave */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3081 NULL, /* chat_whisper */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3082 NULL, /* chat_send */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3083 NULL, /* keepalive */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3084 NULL, /* register_user */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3085 NULL, /* get_cb_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3086 NULL, /* get_cb_away */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3087 NULL, /* alias_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3088 NULL, /* group_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3089 NULL, /* rename_group */ |
24853
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
3090 msim_buddy_free, /* buddy_free */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3091 NULL, /* convo_closed */ |
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
3092 msim_normalize, /* normalize */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3093 NULL, /* set_buddy_icon */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3094 NULL, /* remove_group */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3095 NULL, /* get_cb_real_name */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3096 NULL, /* set_chat_topic */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3097 NULL, /* find_blist_chat */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3098 NULL, /* roomlist_get_list */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3099 NULL, /* roomlist_cancel */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3100 NULL, /* roomlist_expand_category */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3101 NULL, /* can_receive_file */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3102 NULL, /* send_file */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3103 NULL, /* new_xfer */ |
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3104 msim_offline_message, /* offline_message */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3105 NULL, /* whiteboard_prpl_ops */ |
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3106 msim_send_really_raw, /* send_raw */ |
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3107 NULL, /* roomlist_room_serialize */ |
19712
eabc8a32b1e4
Fix up an apparently bad merge with the reserved fields here.
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
3108 NULL, /* unregister_user */ |
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3109 msim_send_attention, /* send_attention */ |
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3110 msim_attention_types, /* attention_types */ |
26062
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3111 sizeof(PurplePluginProtocolInfo), /* struct_size */ |
23112
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23111
diff
changeset
|
3112 msim_get_account_text_table, /* get_account_text_table */ |
26062
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3113 NULL, /* initiate_media */ |
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3114 NULL /* can_do_media */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3115 }; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3116 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3117 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3118 * Load the plugin. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3119 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3120 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3121 msim_load(PurplePlugin *plugin) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3122 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3123 /* If compiled to use RC4 from libpurple, check if it is really there. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3124 if (!purple_ciphers_find_cipher("rc4")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3125 purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3126 purple_notify_error(plugin, _("Missing Cipher"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3127 _("The RC4 cipher could not be found"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3128 _("Upgrade " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3129 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3130 "plugin will not be loaded.")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3131 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3132 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3133 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3134 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3135 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3136 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3137 * Called when friends have been imported to buddy list on server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3138 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3139 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
3140 msim_import_friends_cb(MsimSession *session, const MsimMessage *reply, gpointer user_data) |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3141 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3142 MsimMessage *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3143 gchar *completed; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3144 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3145 /* Check if the friends were imported successfully. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3146 body = msim_msg_get_dictionary(reply, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3147 g_return_if_fail(body != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3148 completed = msim_msg_get_string(body, "Completed"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3149 msim_msg_free(body); |
25168
27e6ab4ff554
This should fix a sporadic crash? The behavior before was clearly wrong--
Mark Doliner <mark@kingant.net>
parents:
25057
diff
changeset
|
3150 g_return_if_fail(completed != NULL); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3151 if (!g_str_equal(completed, "True")) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3152 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3153 purple_debug_info("msim_import_friends_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3154 "failed to import friends: %s", completed); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3155 purple_notify_error(session->account, _("Add friends from MySpace.com"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3156 _("Importing friends failed"), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3157 g_free(completed); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3158 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3159 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3160 g_free(completed); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3161 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3162 purple_debug_info("msim_import_friends_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3163 "added friends to server-side buddy list, requesting new contacts from server"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3164 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3165 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3166 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3167 /* TODO: show, X friends have been added */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3168 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3169 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3170 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3171 * Import friends from myspace.com. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3172 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3173 static void msim_import_friends(PurplePluginAction *action) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3174 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3175 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3176 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3177 gchar *group_name; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3178 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3179 gc = (PurpleConnection *)action->context; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3180 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3181 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3182 group_name = "MySpace Friends"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3183 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3184 g_return_if_fail(msim_send(session, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3185 "persist", MSIM_TYPE_INTEGER, 1, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3186 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3187 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3188 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3189 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3190 "uid", MSIM_TYPE_INTEGER, session->userid, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3191 "rid", MSIM_TYPE_INTEGER, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3192 msim_new_reply_callback(session, msim_import_friends_cb, NULL), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3193 "body", MSIM_TYPE_STRING, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3194 g_strdup_printf("GroupName=%s", group_name), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3195 NULL)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3196 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3197 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3198 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3199 * Actions menu for account. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3200 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3201 static GList * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3202 msim_actions(PurplePlugin *plugin, gpointer context) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3203 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3204 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3205 GList *menu; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3206 PurplePluginAction *act; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3207 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3208 gc = (PurpleConnection *)context; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3209 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3210 menu = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3211 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3212 #if 0 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3213 /* TODO: find out how */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3214 act = purple_plugin_action_new(_("Find people..."), msim_); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3215 menu = g_list_append(menu, act); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3216 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3217 act = purple_plugin_action_new(_("Change IM name..."), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3218 menu = g_list_append(menu, act); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3219 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3220 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3221 act = purple_plugin_action_new(_("Add friends from MySpace.com"), msim_import_friends); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3222 menu = g_list_append(menu, act); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3223 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3224 return menu; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3225 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3226 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3227 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3228 * Based on MSN's plugin info comments. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3229 */ |
19720
b2d213681176
Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <pidgin@unreliablesource.net>
parents:
19713
diff
changeset
|
3230 static PurplePluginInfo info = { |
23111
718a9c287839
Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23107
diff
changeset
|
3231 PURPLE_PLUGIN_MAGIC, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3232 PURPLE_MAJOR_VERSION, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3233 PURPLE_MINOR_VERSION, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3234 PURPLE_PLUGIN_PROTOCOL, /**< type */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3235 NULL, /**< ui_requirement */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3236 0, /**< flags */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3237 NULL, /**< dependencies */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3238 PURPLE_PRIORITY_DEFAULT, /**< priority */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3239 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3240 "prpl-myspace", /**< id */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3241 "MySpaceIM", /**< name */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3242 MSIM_PRPL_VERSION_STRING, /**< version */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3243 /** summary */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3244 "MySpaceIM Protocol Plugin", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3245 /** description */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3246 "MySpaceIM Protocol Plugin", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3247 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3248 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3249 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3250 msim_load, /**< load */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3251 NULL, /**< unload */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3252 NULL, /**< destroy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3253 NULL, /**< ui_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3254 &prpl_info, /**< extra_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3255 NULL, /**< prefs_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3256 msim_actions, /**< msim_actions */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3257 NULL, /**< reserved1 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3258 NULL, /**< reserved2 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3259 NULL, /**< reserved3 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3260 NULL /**< reserved4 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3261 }; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3262 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3263 #ifdef MSIM_SELF_TEST |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3264 /* |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3265 * Test functions. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3266 * Used to test or try out the internal workings of msimprpl. If you're reading |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3267 * this code for the first time, these functions can be instructive in learning |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3268 * how msimprpl is architected. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3269 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3270 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3271 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3272 * Test MsimMessage for basic functionality. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3273 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3274 static int |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3275 msim_test_msg(void) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3276 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3277 MsimMessage *msg, *msg_cloned, *msg2; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3278 GList *list; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3279 gchar *packed, *packed_expected, *packed_cloned; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3280 guint failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3281 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3282 failures = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3283 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3284 purple_debug_info("msim", "\n\nTesting MsimMessage\n"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3285 msg = msim_msg_new(NULL); /* Create a new, empty message. */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3286 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3287 /* Append some new elements. */ |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
3288 msg = msim_msg_append(msg, "bx", MSIM_TYPE_BINARY, g_string_new_len("XXX", 3)); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3289 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3290 msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3291 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3292 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v52/xxx\\yyy")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3293 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3294 msim_msg_dump("msg debug str=%s\n", msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3295 packed = msim_msg_pack(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 purple_debug_info("msim", "msg packed=%s\n", packed); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3298 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3299 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1" |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3300 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\"; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3301 |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3302 if (!g_str_equal(packed, packed_expected)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3303 purple_debug_info("msim", "!!!(%d), msim_msg_pack not what expected: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3304 ++failures, packed, packed_expected); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3305 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3306 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3307 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3308 msg_cloned = msim_msg_clone(msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3309 packed_cloned = msim_msg_pack(msg_cloned); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3310 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3311 purple_debug_info("msim", "msg cloned=%s\n", packed_cloned); |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3312 if (!g_str_equal(packed, packed_cloned)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3313 purple_debug_info("msim", "!!!(%d), msim_msg_pack on cloned message not equal to original: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3314 ++failures, packed_cloned, packed); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3315 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3316 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3317 g_free(packed); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3318 g_free(packed_cloned); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3319 msim_msg_free(msg_cloned); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3320 msim_msg_free(msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3321 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3322 /* Try some of the more advanced functionality */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3323 list = NULL; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3324 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3325 list = g_list_prepend(list, "item3"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3326 list = g_list_prepend(list, "item2"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3327 list = g_list_prepend(list, "item1"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3328 list = g_list_prepend(list, "item0"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3329 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3330 msg = msim_msg_new(NULL); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3331 msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3332 msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3333 msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3334 msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3335 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3336 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3337 msim_msg_dump("msg with list=%s\n", msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3338 purple_debug_info("msim", "msg with list packed=%s\n", msim_msg_pack(msg)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3339 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3340 msg2 = msim_msg_new(NULL); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3341 msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3342 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3343 msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3344 purple_debug_info("msim", "msg with dict packed=%s\n", msim_msg_pack(msg2)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3345 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3346 msim_msg_free(msg2); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3347 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3348 return failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3349 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3350 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3351 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3352 * Test protocol-level escaping/unescaping. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3353 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3354 static int |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3355 msim_test_escaping(void) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3356 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3357 guint failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3358 gchar *raw, *escaped, *unescaped, *expected; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3359 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3360 failures = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3361 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3362 purple_debug_info("msim", "\n\nTesting escaping\n"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3363 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3364 raw = "hello/world\\hello/world"; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3365 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3366 escaped = msim_escape(raw); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3367 purple_debug_info("msim", "msim_test_escaping: raw=%s, escaped=%s\n", raw, escaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3368 expected = "hello/1world/2hello/1world"; |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3369 if (!g_str_equal(escaped, expected)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3370 purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3371 ++failures, escaped, expected); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3372 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3373 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3374 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3375 unescaped = msim_unescape(escaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3376 g_free(escaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3377 purple_debug_info("msim", "msim_test_escaping: unescaped=%s\n", unescaped); |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3378 if (!g_str_equal(raw, unescaped)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3379 purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3380 ++failures, raw, unescaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3381 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3382 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3383 return failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3384 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3385 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3386 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3387 msim_test_all(void) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3388 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3389 guint failures; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3390 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3391 failures = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3392 failures += msim_test_msg(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3393 failures += msim_test_escaping(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3394 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3395 if (failures) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3396 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3397 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3398 purple_debug_info("msim", "msim_test_all - all tests passed!\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3399 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3400 exit(0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3401 } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3402 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3403 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3404 #ifdef MSIM_CHECK_NEWER_VERSION |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3405 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3406 * Callback for when a currentversion.txt has been downloaded. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3407 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3408 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3409 msim_check_newer_version_cb(PurpleUtilFetchUrlData *url_data, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3410 gpointer user_data, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3411 const gchar *url_text, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3412 gsize len, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3413 const gchar *error_message) |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3414 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3415 GKeyFile *keyfile; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3416 GError *error; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3417 GString *data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3418 gchar *newest_filever; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3419 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3420 if (!url_text) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3421 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3422 "got error: %s\n", error_message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3423 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3424 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3425 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3426 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3427 "url_text=%s\n", url_text ? url_text : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3428 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3429 /* Prepend [group] so that GKeyFile can parse it (requires a group). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3430 data = g_string_new(url_text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3431 purple_debug_info("msim", "data=%s\n", data->str |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3432 ? data->str : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3433 data = g_string_prepend(data, "[group]\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3434 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3435 purple_debug_info("msim", "data=%s\n", data->str |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3436 ? data->str : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3437 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3438 /* url_text is variable=data\n...†*/ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3439 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3440 /* Check FILEVER, 1.0.716.0. 716 is build, MSIM_CLIENT_VERSION */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3441 /* New (english) version can be downloaded from SETUPURL+SETUPFILE */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3442 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3443 error = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3444 keyfile = g_key_file_new(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3445 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3446 /* Default list seperator is ;, but currentversion.txt doesn't have |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3447 * these, so set to an unused character to avoid parsing problems. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3448 g_key_file_set_list_separator(keyfile, '\0'); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3449 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3450 g_key_file_load_from_data(keyfile, data->str, data->len, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3451 G_KEY_FILE_NONE, &error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3452 g_string_free(data, TRUE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3453 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3454 if (error != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3455 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3456 "couldn't parse, error: %d %d %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3457 error->domain, error->code, error->message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3458 g_error_free(error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3459 return; |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3460 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3461 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3462 gchar **ks; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3463 guint n; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3464 ks = g_key_file_get_keys(keyfile, "group", &n, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3465 purple_debug_info("msim", "n=%d\n", n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3466 guint i; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3467 for (i = 0; ks[i] != NULL; ++i) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3468 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3469 purple_debug_info("msim", "%d=%s\n", i, ks[i]); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3470 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3471 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3472 newest_filever = g_key_file_get_string(keyfile, "group", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3473 "FILEVER", &error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3474 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3475 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3476 "newest filever: %s\n", newest_filever ? |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3477 newest_filever : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3478 if (error != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3479 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3480 "error: %d %d %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3481 error->domain, error->code, error->message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3482 g_error_free(error); |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3483 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3484 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3485 g_key_file_free(keyfile); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3486 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3487 exit(0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3488 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3489 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3490 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3491 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3492 Handle a myim:addContact command, after username has been looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3493 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3494 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3495 msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3496 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3497 MsimMessage *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3498 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3499 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3500 body = msim_msg_get_dictionary(userinfo, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3501 username = msim_msg_get_string(body, "UserName"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3502 msim_msg_free(body); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3503 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3504 if (!username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3505 guint uid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3506 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3507 uid = msim_msg_get_integer(userinfo, "UserID"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3508 g_return_if_fail(uid != 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3509 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3510 username = g_strdup_printf("%d", uid); |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3511 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3512 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3513 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3514 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3515 g_free(username); |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3516 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3517 |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3518 /* TODO: move uid->username resolving to IM sending and buddy adding functions, |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3519 * so that user can manually add or IM by userid and username automatically |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3520 * looked up if possible? */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3521 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3522 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3523 * Handle a myim:sendIM URI command, after username has been looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3524 */ |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3525 static void |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3526 msim_uri_handler_sendIM_cb(MsimSession *session, MsimMessage *userinfo, gpointer data) |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3527 { |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3528 PurpleConversation *conv; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3529 MsimMessage *body; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3530 gchar *username; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3531 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3532 body = msim_msg_get_dictionary(userinfo, "body"); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3533 username = msim_msg_get_string(body, "UserName"); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3534 msim_msg_free(body); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3535 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3536 if (!username) { |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3537 guint uid; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3538 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3539 uid = msim_msg_get_integer(userinfo, "UserID"); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3540 g_return_if_fail(uid != 0); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3541 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3542 username = g_strdup_printf("%d", uid); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3543 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3544 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3545 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3546 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, username, session->account); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3547 if (!conv) { |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3548 purple_debug_info("msim_uri_handler", "creating new conversation for %s\n", username); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3549 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, session->account, username); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3550 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3551 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3552 /* Just open the window so the user can send an IM. */ |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3553 purple_conversation_present(conv); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3554 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3555 g_free(username); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3556 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3557 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3558 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3559 msim_uri_handler(const gchar *proto, const gchar *cmd, GHashTable *params) |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3560 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3561 PurpleAccount *account; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3562 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3563 GList *l; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3564 gchar *uid_str, *cid_str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3565 guint uid, cid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3566 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3567 if (g_ascii_strcasecmp(proto, "myim")) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3568 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3569 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3570 /* Parameters are case-insensitive. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3571 uid_str = g_hash_table_lookup(params, "uid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3572 cid_str = g_hash_table_lookup(params, "cid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3573 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3574 uid = uid_str ? atol(uid_str) : 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3575 cid = cid_str ? atol(cid_str) : 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3576 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3577 /* Need a contact. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3578 g_return_val_if_fail(cid != 0, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3579 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3580 /* TODO: if auto=true, "Add all the people on this page to my IM List!", on |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3581 * http://collect.myspace.com/index.cfm?fuseaction=im.friendslist. Don't need a cid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3582 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3583 /* Convert numeric contact ID back to a string. Needed for looking up. Don't just |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3584 * directly use cid directly from parameters, because it might not be numeric. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3585 * It is trivial to change this to allow cID to be a username, but that's not how |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3586 * the official MySpaceIM client works, so don't provide that functionality. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3587 cid_str = g_strdup_printf("%d", cid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3588 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3589 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3590 /* Find our account with specified user id, or use first connected account if uid=0. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3591 account = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3592 l = purple_accounts_get_all(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3593 while (l) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3594 if (purple_account_is_connected(l->data) && |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3595 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3596 account = l->data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3597 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3598 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3599 l = l->next; |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3600 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3601 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3602 if (!account) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3603 purple_notify_error(NULL, _("myim URL handler"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3604 _("No suitable MySpaceIM account could be found to open this myim URL."), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3605 _("Enable the proper MySpaceIM account and try again.")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3606 g_free(cid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3607 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3608 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3609 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3610 session = (MsimSession *)account->gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3611 g_return_val_if_fail(session != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3612 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3613 /* Lookup userid to username. TODO: push this down, to IM sending/contact |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3614 * adding functions. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3615 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3616 /* myim:sendIM?uID=USERID&cID=CONTACTID */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3617 if (!g_ascii_strcasecmp(cmd, "sendIM")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3618 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_sendIM_cb, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3619 g_free(cid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3620 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3621 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3622 /* myim:addContact?uID=USERID&cID=CONTACTID */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3623 } else if (!g_ascii_strcasecmp(cmd, "addContact")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3624 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_addContact_cb, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3625 g_free(cid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3626 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3627 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3628 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3629 return FALSE; |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3630 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3631 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3632 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3633 * Initialize plugin. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3634 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3635 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3636 init_plugin(PurplePlugin *plugin) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3637 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3638 #ifdef MSIM_SELF_TEST |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3639 msim_test_all(); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3640 exit(0); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3641 #endif /* MSIM_SELF_TEST */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3642 |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3643 PurpleAccountOption *option; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3644 static gboolean initialized = FALSE; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3645 |
19598
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3646 #ifdef MSIM_CHECK_NEWER_VERSION |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3647 /* PROBLEM: MySpace's servers always return Content-Location, and |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3648 * libpurple redirects to it, infinitely, even though it is the same |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3649 * location we requested! */ |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3650 purple_util_fetch_url("http://im.myspace.com/nsis/currentversion.txt", |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3651 FALSE, /* not full URL */ |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3652 "MSIMAutoUpdateAgent", /* user agent */ |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3653 TRUE, /* use HTTP/1.1 */ |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3654 msim_check_newer_version_cb, NULL); |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3655 #endif |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3656 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3657 /* TODO: default to automatically try different ports. Make the user be |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3658 * able to set the first port to try (like LastConnectedPort in Windows client). */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3659 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3660 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3661 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3662 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3663 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3664 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3665 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3666 option = purple_account_option_bool_new(_("Show display name in status text"), "show_display_name", TRUE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3667 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3668 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3669 option = purple_account_option_bool_new(_("Show headline in status text"), "show_headline", TRUE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3670 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3671 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3672 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3673 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS |
19733
0844b0638f0b
The 'Send Emoticons' preferences (which is only configurable if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined) defaults to TRUE when used, a reasonable default. The preference, if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined, should do the same.
Evan Schoenberg <evan.s@dreskin.net>
parents:
19720
diff
changeset
|
3674 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", TRUE); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3675 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3676 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3677 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3678 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3679 option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3680 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3681 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3682 option = purple_account_option_int_new(_("Base font size (points)"), "base_font_size", MSIM_BASE_FONT_POINT_SIZE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3683 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3684 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3685 |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3686 /* Code below only runs once. Based on oscar.c's oscar_init(). */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3687 if (initialized) |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3688 return; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3689 |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3690 initialized = TRUE; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3691 |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3692 purple_signal_connect(purple_get_core(), "uri-handler", &initialized, |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3693 PURPLE_CALLBACK(msim_uri_handler), NULL); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3694 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3695 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3696 PURPLE_INIT_PLUGIN(myspace, init_plugin, info); |